自定义异常类
快捷方式
- 打开Exception类:连续点两下shift键
- 构造器:art+inset
- 选择打开栏的toString():art+inset
public class MyException extends Exception{
//传递数字>10;
private int detail;
//构造器:art+inset
public MyException(int a) {
this.detail = a;
}
//toString:异常的打印信息 art+inset 选择打开栏的toString()
@Override
public String toString() {
return "MyException{" + detail + '}';
}
}
测试自定义的异常
方法1:
public class Test {
//可能会存在异常的方法
//方法1
static void test(int a){
if(a>10){
try{
throw new MyException(a);
}catch(MyException e){
e.printStackTrace();
}
}
}
}
方法二:
//方法二:
static void test(int a) throws MyException{
System.out.println("传递的参数为:"+a);
if (a > 10) {
throw new MyException(a);//抛出
}
System.out.println("OK");
}
完整例子
public class Test2 {
//方法二:
static void test(int a) throws MyException{
System.out.println("传递的参数为:"+a);
if (a > 10) {
throw new MyException(a);//抛出
}
System.out.println("OK");
}
public static void main(String[] args) {
try{
test(11);//调用了方法
}catch(MyException e){//e为异常的信息(自定义的时候toString生成了异常信息,然后保存到e,catch后打印出来就行)
//if(){}
//对于总结的第4点,可以增加代码块处理异常,而不是单纯打印
System.out.println("MyException=>"+e);
}
}
}
注意:
- 对于总结的第4点,可以增加代码块处理异常,而不是单纯打印
- 列如:if(){}语句按自己的要求输出提示
总结:
- 处理运行异常时,采用逻辑去合理规避同时辅助try-catch处理
- 在多重catch块后面,也可以加一个catch(Exception)来处理可能被遗漏的异常
- 对于不确定的代码,也可以加上try-catch,处理潜在的异常
- 重点:尽量去处理异常,不要只是简单地调用printStackTrace() 打印输出用快捷键Alt+Enter
- 具体如何处理异常,要根据不同的业务需求类型去决定(公司不同,异常不同)
- 尽量添加finally语句块去释放占用的资源(尤其IO流)