简述下自定义异常的应用场景
1. 概述
如上图所示,我们想回答这个问题就要了解异常的基本结构。哪些是我们可以控制的,哪些是我们不能控制的。
也许有人会问了,其实在逻辑中可以多加判断,为什么要需要自定义呢。 其实判断的内容无非是以下几种:
- 多添加if else。尽可能保证每个分支的细节
- 多嵌套try catch, 保证即使程序出错了,也可以走到有效的catch中
但是如果任由这种错误抛出的话,对前端用户不友好,因为用户不理解什么错误。
2. 自定义
我们不自定义异常可以满足需求。但是如果自定义异常后,会有诸多好处:
- 所有的异常都归于一处处理,方便异常管理
- 可以给自定义异常传递一些关键字,方便错误定位
- 进行错误信息转换,给前端友好提示
public class MyException extends Exception {public MyException() {super();}public MyException(String message) {super(message);}public MyException(String message, String iden) {super(message);// 此处可以进行logger打印。 方便不同的识别码定位问题System.out.println(iden);// 此时可以返回统一的错误}
}
3. throw
以及throws
不同
public class TestVar07 {public void test01(int i) throws MyException {if (i == 0) {throw new MyException("i is 0");}}
}
throw
表示遇到特殊的分支不进行处理,主动
抛出异常throws
用来接受内部抛出的异常,其异常给调用者进行处理