一、Exception和Error的区别
在Java中我们可以这样区分,异常(Exception)是一种非程序原因的操作失败(Failure),而错误(Error)则意味着程序有缺陷(Bug)。
二、Java的类继承体系非常清楚地区分了Exception和Error
java.lang.Object
java.lang.Throwable
java.lang.Error
java.lang.Exception
一般情况下不应该尝试用catch(Throwable)或者catch(Error)去捕获Error。
三、声明异常和未声明异常的区别
1、从本质上将:在方法签名上声明的异常属于方法接口的一部分,它和方法的返回值处于同一抽象层次,不随具体实现的变化而改变。
在方法签名上声明要抛出的异常,属于这个方法接口层面的一种失败情况,简答的说就是,不管方法的内部采用什么实现,都必然存在方法内部产生方法签名上声明的异常的情况,所以这时把这个异常声明出来就非常合理。
2、下面有个相反的例子:
从帐户a向帐户b转账的transfer方法:
public boolean transfer(Account a, Account b, Money money) throws SQLException
它抛出SQLException就不对了,因为SQLException不属于这个transfer接口层面的概念,而属于具体实现,很有可能未来某个实现不用SQL了那么这个异常也就不存在了。这种情况下,就应该捕获SQLException,然后抛出自定义异常TransferException,其中TransferException可以