Java多层的异常捕获
2015-11-14 19:55
537 查看
示例程序一:
结果截图:
原因分析:由于在程序中有两个 throw 抛出了两个不同类型的错误,所以,后面紧跟的catch会捕获相应类型的错误,并执行相应的处理办法。
由于
示例程序2:
结果截图:
结论:
可以有多个catch语句块,每个代码块捕获一种异常。在某个try块后有两个不同的catch 块捕获两个相同类型的异常是语法错误。
使用catch语句,只能捕获Exception类及其子类的对象。因此,一个捕获Exception对象的catch语句块可以捕获所有“可捕获”的异常。
将catch(Exception e)放在别的catch块前面会使这些catch块都不执行,因此Java不会编译这个程序。
public class CatchWho { public static void main(String[] args) { try { try { throw new ArrayIndexOutOfBoundsException(); } catch(ArrayIndexOutOfBoundsException e) { System.out.println( "ArrayIndexOutOfBoundsException" + "/内层try-catch"); } throw new ArithmeticException(); } catch(ArithmeticException e) { System.out.println("发生ArithmeticException"); } catch(ArrayIndexOutOfBoundsException e) { System.out.println( "ArrayIndexOutOfBoundsException" + "/外层try-catch"); } } }
结果截图:
原因分析:由于在程序中有两个 throw 抛出了两个不同类型的错误,所以,后面紧跟的catch会捕获相应类型的错误,并执行相应的处理办法。
由于
示例程序2:
public class CatchWho2 { public static void main(String[] args) { try { try { throw new ArrayIndexOutOfBoundsException(); } catch(ArithmeticException e) { System.out.println( "ArrayIndexOutOfBoundsException" + "/内层try-catch"); } throw new ArithmeticException(); } catch(ArithmeticException e) { System.out.println("发生ArithmeticException"); } catch(ArrayIndexOutOfBoundsException e) { System.out.println( "ArrayIndexOutOfBoundsException" + "/外层try-catch"); } } }
结果截图:
结论:
可以有多个catch语句块,每个代码块捕获一种异常。在某个try块后有两个不同的catch 块捕获两个相同类型的异常是语法错误。
使用catch语句,只能捕获Exception类及其子类的对象。因此,一个捕获Exception对象的catch语句块可以捕获所有“可捕获”的异常。
将catch(Exception e)放在别的catch块前面会使这些catch块都不执行,因此Java不会编译这个程序。
相关文章推荐
- Java 学习笔记
- java-内存模型-概述
- Java异常处理
- java打开文件对话框
- 高性能页面加载技术--BigPipe设计原理及Java简单实现
- Java的Socket通信
- Java基础之List集合原理(一)
- 搭建maven+spring+freemaker+mybatis环境之二
- Java MD5加密算法的实现
- javaWeb之JavaBean总结
- Java基础学习笔记
- 字符串之逆序(java实现)
- 字符串之字符串平移(java实现)
- Java中的wait和notify总结和应用
- spring aop的一些问题和bean组件问题
- java调度器(重试机制)实现
- List接口问题和java里TreeSet的add问题
- java构造函数和静态变量的执行顺序
- 搭建maven+spring+freemaker+mybatis环境之一
- spark java.lang.OutOfMemoryError: Java heap space