【面试】Java异常链
来源:互联网 发布:安装美工刀片的圆规 编辑:程序博客网 时间:2024/05/29 17:37
什么是异常链?
百度百科:异常链是一种面向对象编程技术,指将捕获的异常包装进一个新的异常中并重新抛出的异常处理方式。原异常被保存为新异常的一个属性(比如cause)。这个想法是指一个方法应该抛出定义在相同的抽象层次上的异常,但不会丢弃更低层次的信息。
大白话:处理异常1的同时会抛出异常2.
通过自定义异常实现异常链?
1.自定义两个异常类
//自定义两个异常class MyException1 extends Exception{private static final long serialVersionUID = 1L;}//第二个异常class MyException2 extends Exception{private static final long serialVersionUID = 1L;public MyException2() {super();}public MyException2(Throwable throwable){super(throwable);}}
2.在两个方法中分别调用两个异常类
//该方法抛出第二个异常public void fun2() throws MyException2{try {fun1();} catch (MyException1 e) {e.printStackTrace();throw new MyException2();}}//该方法抛出一个异常public void fun1() throws MyException1{throw new MyException1();}
3.调用fun2,查看打印信息
可以看出控制台打印出两个异常信息,但是【百度百科】中对异常链的描述有一句:原异常被保存为新异常的一个属性(比如cause)。
所以,我们还要让MyException2 能够持有MyException1的环境信息,形成了一条链,我们也成为异常链。
4.实现异常链
修改fun2代码如下;
//该方法抛出第二个异常public void fun2() throws MyException2{try {fun1();} catch (MyException1 e) {e.printStackTrace();throw new MyException2(e);}}
5.运行,查看修改后的打印信息
这样,异常2就保存了异常1的信息,形成了一条链。
完整代码
package cn.com.test05;public class MainTest01 {public static void main(String[] args){MainTest01 m = new MainTest01();try{/* * 调用fun2 * fun2里面有fun1,fun1抛出异常1 * 捕捉异常1处理后,抛出异常2 */m.fun2();}catch(MyException2 e){e.printStackTrace();}}//该方法抛出第二个异常public void fun2() throws MyException2{try {fun1();} catch (MyException1 e) {e.printStackTrace();throw new MyException2(e);}}//该方法抛出一个异常public void fun1() throws MyException1{throw new MyException1();}}//自定义两个异常class MyException1 extends Exception{private static final long serialVersionUID = 1L;}//第二个异常class MyException2 extends Exception{private static final long serialVersionUID = 1L;public MyException2() {super();}public MyException2(Throwable throwable){super(throwable);}}
阅读全文
0 0
- 【面试】Java异常链
- java异常面试问题
- 面试-java异常
- 面试准备---Java异常
- Java面试宝典-异常
- 【Java面试知识】异常
- java面试之异常捕获
- Java面试中异常常见问题
- java面试之常见异常
- Java异常的面试问题及答案
- Java异常的面试问题及答案
- 阿里电话面试:java 异常处理
- Java异常的面试问题及答案
- Java学习--异常类RuntimeException面试技巧
- Java 面试准备系列2-异常
- Java面试【抛出异常】【重写方法权限】
- Android面试-Java基础-异常 IO流
- [面试要点]java异常处理机制
- OpenCV3_C++_Threshold()阈值化处理 实例
- 服务器tomcat配置https最终解决方案
- Android判断SIM卡是否存在
- ARM 伪指令详解[转]
- 在VC++6.0下设置GDI+
- 【面试】Java异常链
- 字符串算法——单一数(Single Number III)
- 关于MySQL外连接查询的NULL
- R in getting help
- javascript中String类型
- VS Code 将tab缩进修改为空格缩进
- windows上安装python
- OpenCV3_C++_BitwiseNot()图像颜色的反转 实例
- 好听的歌曲,更新记录听过的音乐。。