异常体系结构
不常见的Error
Stackoverflow OutofmemoryError
常见运行时异常
自定义异常
自定义异常编写
定义一个异常类继承一个异常类,重写构造器
然后再需要异常处理的地方通过throw new 自定义异常
//set方法中进行处理
public void setAge(int age) {
if (age<120&&age>0) {
this.age = age;
}else {
throw new AgeException("1-120");
}
}
//定义异常类继承异常 重写两个构造方法
class AgeException extends RuntimeException {
public AgeException() {
}
public AgeException(String message) {
super(message);
}
}
public Student1( int age) {
setAge(age);
}
//逻辑异常捕获
catch (Exception e) {
System.out.println(e);
}
异常处理的方式
try-catch
try{
//需要执行地代码
}
catch(NullpointException ||ClasscastException e){
//可以catch多个异常但是向下走异常范围要更大
//多个异常可以并行捕获
}
catch(Exception e){
// 对异常的处理
}
finally{
//无论异常是否出现都会执行(error不行)
}
上抛异常
通过关键字throws向上抛出异常,由调用者自己解决或者再向上抛出异常
throws用于编译时异常
注意:
- 子类不能抛出比父类更大的异常
- 当父类中为抽象方法,子类重写,只能try-catch不能上抛