Java异常机制
Java异常机制
Java中的可抛出类型都继承自java.lang.Throwable. Error类型继承自java.lang.Error. Exception类型继承自java.lang.Exception.
例如:
1.IllegalAccessException异常
2.IllegalArgumentException异常
3.IllegalAccessError
受查异常和非受查异常
RuntimeException和Error都是不用捕获也能通过编译的,称为非受查异常。(当然二者都可以捕获)
其他的异常类型都需要捕获。
如果一个方法抛出了checked异常并且没有自己捕获,必须采用throws在函数签名尾部声明以便捕获。
注意:如果一个catch语句试图捕获checked异常,那么该try语句中必须可能抛出该checked异常或者其子类,否则编译报错。
例如
try { System.out.println("nothing happened");
} catch(IllegalAccessException e){ System.out.println(e); }
//该例会报错“在相应的 try 语句主体中不能抛出异常错误IllegalAccessException”
方法可以在任何位置使用throw抛出异常。
自定义异常
- 必须从已有的异常类继承
- 可以定义一个以字符串为参数的构造方法传递描述信息
- 重写Throwable的getMessage方法,返回描述信息。
1 class AgeLessThanException extends Exception{ 2 public String Message; 3 public AgeLessThanException(String mes){ 4 this.Message = mes; 5 } 6 public String getMessage(){ 7 return Message; 8 } 9 }