笔记本二题exception error区别.pdfVIP

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

第二题Exception和Error有什么区别

笔记本:Java面试题

创建时间:2018/9/8星期六15:57更新时间:2018/9/9星期日19:24

作者:这个名字其实还是很长很长的

请对比Exception和Error,另外,运行时异常与一般异常有什么区

别?

典型回答:

Exception和Error都是继承了Throwable类,在Java中只有Throwable类型

的实例才可以被抛出或者捕获,它是异常处理机制的基本组成类型。Exceptoin和

Error体现了Java平台设计者对于不同异常情况的分类。Exception是程序正常

运行中,可以预料的意外情况,可以并且应该获,进行相应处理。Error是指

在正常情况下,不大可能出现的情况,绝大部分的Error都会导致处于的不

可恢复状态。既然是情况,所以不便于也不需要捕获,常见的比如

OutofMemoryError之类,都是Error的子类。

Exceptoin又分为可检查异常和查异常,可检查异常在代码里必须显示

地进行捕获处理,这是编译器检查的一部分。查异常就是所谓的运行时异

常,类似于NullPointerExceptionArrayIndexOutofBoundception之类,通

常是可以编码避免的逻辑错误,具体根据需要来进行判断是否需要捕获,并不会

在编译期强制要求。

知识扩展:

在开发中尽量不要捕获类似Exceptio这样的通用异常,而是应该捕获特定异

常.这是因为我们在日常的开发和合作中,我们读代码的机会往往超过写代码,软

件工程是门协作的,所以我们有义务让自己的代码能够直接地体现出尽量多

的信息,而泛泛的Exception之类,恰恰隐藏了我们的目的。另外,我们也要保证

程序不会捕获到我们不希望捕获的异常。比如,你可能更希望RuntimeException

被扩散出来,而不是获。

在开发中不要生吞异常。这是异常处理中要特别注意的事情,因为很可能会

导致非常难以诊断的诡异情况。生吞异常,往往是基于假设这段代码可能不会发

生,或者感觉忽略异常是无所谓的,但是千万不要在产品代码做这种假设!如果

我们不把异常抛出来,或者也没有输出日志之类,程序可能在后续代码以不

的方式结束。没有人能够轻易判断究竟是哪里出了异常,以及是什么产生了

异常。

在开发中不要输出标准错误(STERR),因为有时候你很难判断出到底输出

到哪里去了。尤其是分布式系统,如果发生异常,但是无法找到堆栈轨迹,这纯属

是为诊断设置。所以最好使用产品日志,详细地输出到日志系统里。

Throwearly,catchlate。在开发中可能会出现各种情况,比如获取配置失

败之类的。在发现问题的时候,第一时间抛出,能够更加清晰地反映问题,这是

Throwearly。catchlate就是我们经常烦恼的问题,捕获异常后,需要怎么处

理?的方式,就是我们前面提到的生吞异常,本质上就是掩盖问题。如果实

在不知道如何处理,可以选择保留原有异常的cause信息,直接再抛出或者构建

新的异常抛出去。在更,因为有了清晰的(业务)逻辑,往往会更清楚合适的

处理方式是什么。

有时候,我们会根据需要自己定义异常,这个时候除了保证提供足够的信息,

还需要考虑两点。一是否需要定异常CheckedException,因为这种类型的设计初

衷是为了从异常情况恢复,作为异常设计者,我们往往有充足信息进行分类。在

保证诊断信息足够的同时,也要考虑避免包含敏感信息,因为那样可能会导致潜

在的安全问题。如果我们看Java的标准类库,你可能注意到类似

jav.ConnectException,出错信息是类似Connectionrefused,而不包

含具体的机器名IP端口等,一个重要的考量就是

文档评论(0)

zhishifuwu + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档