Java中的多异常捕获问题最后

来源:互联网 发布:用服务器搭建数据库 编辑:程序博客网 时间:2024/05/16 05:04

  在Java7以前,每个catch块只能捕获一种类型的异常;但是从Java7开始,一个catch块可以捕获多种类型的异常。使用一个catch块捕获多种类型的异常时需要注意一下两个地方。

1 多种异常类型之间用竖线(|)隔开。

2捕获多种类型的异常时,异常变量有隐式的final修饰,因此程序不能够对异常进行重新复制。

多异常捕获代码如下:

public class MultiExceptionTest {public static void main(String[] args) {try{int a=Integer.parseInt(args[0]);int b=Integer.parseInt(args[1]);int c=a/b;System.out.println("您输入的两个数相除的结果是:"+c);}catch(IndexOutOfBoundsException|NumberFormatException|ArithmeticException ie){System.out.println("程序发生了数组越界、数字格式异常、算数异常之一");ie=new ArithmeticException("tese");//此行代码将会发生错误,因为一个catch捕获多个异常会默认final声明,不能进行重新赋值}catch(Exception e){System.out.println("未知异常");e=new RuntimeException("test");}}}

运行上面的代码产生如下效果图:

最后补充一点:进行多异常捕获是,要先捕获小的异常在捕获大异常,否则无法访问小异常,例如上述代码块如果catch先捕获exception异常,在捕获另外三个小异常,由于那三个小异常都是excpetion的子类,所以不会得到执行的机会。

1 0
原创粉丝点击