跟我学(Effective Java 2)第58条:对可恢复的情况使用受检异常,对编程错误使用运行时异常

第58条:对可恢复的情况使用受检异常,对编程错误使用运行时异常

java 程序设计语言可抛出三种结构(Throwable):受检异常(Checked Excepction)、运行时异常(RunTimeException)、错误(Error)。

在决定使用受检的异常或是或受检的异常时,主要的原则是:如果期望调用者能够适当恢复,对于这种情况就应该使用受检的异常。通过抛出受检的异常,强迫调用者在一个catch字句中处理该异常,或者将它传播除去。 因此,方法中声明要抛出的每个受检的异常,都是对API用户的一种潜在指示:与异常相关联的条件是调用这个方法的一种可能的结果。

有两种未受检的可抛出结构:运行时异常(RunTimeException)和错误(Error)。 在行为上两者是等同的:它们都不需要也不应该被捕获的可抛出结构。如果程序抛出未受检的异常或者错误,往往就属于不可恢复的情形,继续执行下去有害无益。如果程序没有捕捉到这样的可抛出结构,将会导致当前线程停止,并出现适当的错误消息。

用运行时异常来表明编程错误。 大多数的运行时异常都表示前提违例。所谓前提违例是指API的客户没有遵守API规范建立的约定。例如数组访问越界(ArrayIndexOutOfBoundsException)等。

错误表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题 ,比如,内存资源不足、操作系统出错。在大多数情况下,当遇到这样的错误时,建议让该程序中断。这样的异常超出了程序可控制的范围。

总而言之,对于可恢复的情况,使用受检的异常;对于程序错误,则使用运行时异常。有时候并不是那么的黑白分明,如果你相信有一种情况可能允许恢复,就使用受检异常。如果不清楚是否能恢复,就使用未受检的异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值