受检异常:可以通过程序检查改正的错误和异常
非受检异常:需要手动更改代码,或抛出的异常
使用异常的原则:早抛出,晚捕获
在捕获多个异常对象时,应该把最特殊的异常类的catch块放在前面
相对更一般的异常类catch块放到后面
否则会得到不可到达的编译错误
因为更特殊的异常会自动向上转型成为更一般的异常类型,如果先捕获一般的异常,也会包含着捕获了特殊异常 所以特殊异常的catch块就不可达了
异常子类在前被捕获,异常父类在后被捕获(子类在前,父类在后)
在Java 7之前一个catch块只能处理一个异常,Java 7之后一个catch块可以处理多个异常
在catch块中一定要写一些与异常或错误相关程序逻辑(哪怕是打印错误),如果出现空catch块,则是一种极其恶劣的编码习惯
其异常的捕获顺序还是从特殊到一般的,同一继承层次的异常类型,建议放在一个圆括号内
处理更具体的异常类型的catch块应该放在前面,更抽象的异常类型catch块应该放在后边
在同一个圆括号中的多个异常类不能是父子关系(祖先后代关系)
只有在必须处理异常的时候才去try-catch-finally
,一般使用throws
抛出