java7 异常处理增强

在Java 7发行版中,oracle在异常处理机制上也做了一些不错的更改。这些主要是改进的catch块多余的throws子句。让我们看看他们是如何改变的。

1.改进了Java 7中的catch块

在此功能中,现在您可以在单个catch块中捕获多个异常。在Java 7之前,您只能在每个catch块中仅捕获一个异常。
要指定期望的例外列表,使用竖线(‘|‘)字符。
Java程序可在单个catch块中捕获多个异常。

try
{
    //Do some processing which throws NullPointerException;
    throw new NullPointerException();
}
//You can catch multiple exception added after ‘pipe‘ character
catch( NullPointerException npe | IndexOutOfBoundsException iobe )
{
       throw ex;
}

如果一个catch块处理一个以上的异常类型,则该**catch参数是隐式的final**。在此示例中,catch参数exfinal,因此您不能在catch块内为其分配任何值。

2.?Java 7中的冗余抛出子句

此功能使您免于在方法声明中使用throws子句。参见下面的示例:

public class MultipleExceptionsInCatchBlock {

    public static void main(String[] args)
    {
            sampleMethod();
    }

    public static void sampleMethod()
                    //throws Throwable  //No need to do this
    {
        try
        {
            //Do some processing which throws NullPointerException; I am sending directly
            throw new NullPointerException();
        }
        //You can catch multiple exception added after ‘pipe‘ character
        catch(NullPointerException | IndexOutOfBoundsException ex)
        {
            throw ex;
        }
        //Now method sampleMethod() do not need to have ‘throws‘ clause
        catch(Throwable ex)
        {
            throw ex;
        }
    }
}

原文地址:https://www.cnblogs.com/qingmiaokeji/p/12555359.html

时间: 2024-10-29 15:07:52

java7 异常处理增强的相关文章

深入理解C++中的异常处理机制

异常处理 增强错误恢复能力是提高代码健壮性的最有力的途径之一,C语言中采用的错误处理方法被认为是紧耦合的,函数的使用者必须在非常靠近函数调用的地方编 写错误处理代码,这样会使得其变得笨拙和难以使用.C++中引入了异常处理机制,这是C++的主要特征之一,是考虑问题和处理错误的一种更好的方式.使用 错误处理可以带来一些优点,如下: 错误处理代码的编写不再冗长乏味,并且不再和正常的代码混合在一起,程序员只需要编写希望产生的代码,然后在后面某个单独的区段里编写处理错误的嗲吗.多次调用同一个函数,则只需要

Windows内核分析——内核调试机制的实现(NtCreateDebugObject、DbgkpPostFakeProcessCreateMessages、DbgkpPostFakeThreadMessages分析)

本文主要分析内核中与调试相关的几个内核函数. 首先是NtCreateDebugObject函数,用于创建一个内核调试对象,分析程序可知,其实只是一层对ObCreateObject的封装,并初始化一些结构成员而已. 我后面会写一些与window对象管理方面的笔记,会分析到对象的创建过程. //来自WRK1.2NTSTATUS NtCreateDebugObject ( OUT PHANDLE DebugObjectHandle, IN ACCESS_MASK DesiredAccess, IN P

读书笔记<Python3>1

元组与列表 变量分配操作符 身份操作符 动态类型 成员操作符 short-circuit逻辑 异常处理 增强的赋值操作符 pager(26)

.NET笔试题集(二)

1.using关键字有什么用?什么是IDisposable? using可以声明namespace的引入,还可以实现非托管资源的释放,实现了IDisposiable的类在using中创建,using结束后会自动调用该对象的Dispose方法,释放资源.using其实等价于try--finally,用起来更方便. 2.Assembly.Load("foo.dll"); 这句话是否正确? 错误,正确的应该是Assembly.Load("foo"); 或者Assembly

.net 笔试题目

2.1.using关键字有什么用?什么是IDisposable? using可以声明namespace的引入,还可以实现非托管资源的释放,实现了IDisposiable的类在using中创建,using结束后会自动调用该对象的Dispose方法,释放资源.using其实等价于try--finally,用起来更方便. 2.2.Assembly.Load("foo.dll"); 这句话是否正确? 错误,正确的应该是Assembly.Load("foo"); 或者Asse

框架源码系列一:设计模式(设计思想、设计原则、各种设计模式介绍、设计模式总结)

要分析常用框架spring.mybatis.springboot.springcloud等的源码,首先要了解各种设计模式,因为框架里面应用了各种设计模式 一.设计思想 学习设计模式最重要的是掌握设计思想和设计原则,理解了设计思想和设计原则并运用到平时的编码中是最重要的!!! 1. 我们先来看下面的问题: 天天加班编程,编程到底都做的是什么? 撸代码,加班撸代码,写接口.写类.写方法 用设计模式或做设计的作用是什么? 指导.规定该如何撸代码,如何来写接口.写类.写方法 为什么要做设计.用设计模式?

java7(1)——反编译深入理解增强的switch

[本文介绍] 本文主要讲java_7 的改进switch的底层实现.反编译一个使用带String的switch的demo并一步步解析反编译出来的字节码,从编译的角度解读switch的底层实现. [正文] 在java7中,switch()可以放进去String 类型了,这无非是一大便利.底层JVM的swtich并没有真正的改进,只是在编译阶段,编译器把关于String的switch拆分成if语句而已. 我们写一个简单的例子测试一下: (1)Test类:switch()使用String public

java7(3)——增强的catch之自动释放资源

跟mutilcatch一样,java7提供了自动释放资源的方法,但还是很少看到人使用,估计是麻烦去重写close方法.不过jdk内部一些类已经改成使用增强的catch来释放资源的写法,所以我们有必要了解一下这个功能. 顾名思义,自动释放资源就是我们不用再在fianlly里面去close掉资源了,close这个步骤有程序底层自动完成. 举个栗子: [要自动释放资源的类]: 1 public class CustomResource implements AutoCloseable { 2 3 @O

第12章-Swing编程 --- 使用JFileChooser和Java7增强的JColorChooser

JColorChooser用于创建颜色选择器对话框,该类的用法非常简单,该类主要提供了如下两个静态方法: -->showDialog(Component component,String title,Color initialColor):显示一个模式的颜色选择器对话框,该方法返回用户所选的颜色.其中component指定该对话框的parent组件,而title指定该对话框的标题. -->createDialog(Component c,String title,boolean modal,J