一、异常的分类
RuntimeException这个名字容易让人产生混淆,实际上这里所讨论的都发生在程序运行时。
java语言规范将所有派生于Error 或者Exception的异常都称为未检查异常,所有其他的异常称为已检查异常。编译器将检查是否为所有的已检查异常提供了处理器。
二、声明异常
(1)不需要声明java的内部错误,即从Error继承的错误,任何代码都具有跑出这些异常的潜能,而我们对此没法控制。
同样,也不应该声明从RuntimeException继承来的异常。
总之,一个方法应该声明所有可能抛出的已检查异常,而未检查异常要么没法控制(Error),要么应该避免其放生(RuntimeException)。
(2)如果在子类中覆盖了超类的方法,那么在子类方法声明的已检查异常不能比超类方法声明的异常的更通用(也就是说子类方法可以跑出更特定的异常,或者不抛出异常)。
三、抛出异常
四、创建异常类
五、捕获异常
六、异常处理器中抛出异常
七、finally子句
finally子句主要是用来释放资源的。
八、带资源的try语句
如果finally子句中抛出了和try块一样的异常,将会覆盖原来的异常,这时可以使用带资源的try语句