异常处理 运行时
try{
插卡
输入密码和金额 2000
余额 -= 2000
吐钱 2000
}
catch(吐钱异常 e){
余额 += 2000
}
finally{
取卡
}
异常的分类: Throwable
Error:错误 严重底层 无法避免 无法处理
Exception:异常 可以处理
RuntimeException及子类:未检查异常 可以避免 可处理可不处理
非RuntimeException子类:已检查异常 无法避免 必须处理
异常对象的产生和传递
throw 异常对象; 抛出一个异常,throw作用等同于return
传递:沿着方法调用链反向传递
异常的处理
throws 声明抛出 throws 已检查异常类名
本方法内部如果出现该类型的异常,本方法不做处理
try-catch 捕获异常 适用于所有异常(未检查+已检查)
可以同时catch子类异常和父类异常,但必须先catch子类异常
try-catch-finally finally:无论如何都会执行 通常用于释放资源
try-finally 没有真正捕获异常!
自定义异常
自己写类 继承Exception或RuntimeException
方法覆盖(Override)
子类用特殊的方法实现替换父类继承给它的一般的方法实现
语法:方法名、参数表、返回值类型相同;访问修饰符相同或更宽
子类不能抛出比父类更多的异常
子类不能抛出一个父类没有抛出的异常
异常范围只能与父类相同或更少