异常处理机制
- 抛出异常
- 捕获异常
- 异常处理的五个关键字
- try、catch、finally、throw、throws
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 0;
try{//监控区域
System.out.println(a/b);
}catch(ArithmeticException e){ //捕获异常
System.out.println("程序出现异常,变量b不能为0");
}finally { //处理善后工作
System.out.println("finally");
}
//finally 可以不要finally,假设IO/资源需要关闭,就放到finally
}
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 0;
//假设捕获n个异常:从小到大
try{//监控区域
System.out.println(a/b);
}catch(Error e){ //捕获异常
System.out.println("Error");
}catch(Exception e){
System.out.println("Exception");
}catch(Throwable e){
System.out.println("Throwable");
} finally { //处理善后工作
System.out.println("finally");
}
//finally 可以不要finally,假设IO/资源需要关闭,就放到finally
}
}
快捷键 ctrl+alt+t
-
主动抛出异常
//假设这方法中处理不了这个异常,就在方法上抛出异常 public void test(int a,int b) throws ArithmeticException{ if (b==0){ throw new ArithmeticException();//主动抛出异常,一般在方法中使用 } }
-
自定义异常
用户自定义异常类,只需继承Exception类即可
- 自定义异常
- 创建自定义异常类
- 在方法中通过throw关键字抛出异常对象
- 如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作
- 在出现异常方法的调用者中捕获并处理异常
package com.exception.demo02; //自定义的异常类 public class MyException extends Exception{ private int detail; public MyException(int a) { this.detail = a; } //toString:异常的打印信息 @Override public String toString() { return "MyException{"+"detail="+detail+'}'; } }
public class Test { //可能存在的异常方法 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) { System.out.println("MyException=>"+e);; } } }
- 自定义异常