简述下自定义异常的应用场景

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用来接受内部抛出的异常,其异常给调用者进行处理





![buu [网鼎杯 2020 青龙组]boom 1](https://img-blog.csdnimg.cn/a19cf29c28f54e7da73551e7379c777d.png)













