Heim  >  Artikel  >  Backend-Entwicklung  >  规范来说,所有可能被throw的exception都要去catch吗?

规范来说,所有可能被throw的exception都要去catch吗?

WBOY
WBOYOriginal
2016-10-10 11:56:01965Durchsuche

有些时候我明明知道这样做绝不会引起exception,还要去catch吗?

又有些时候,被触发的错误是致命的,而且不是因为用户操作而引起的。这样,就算catch了,也是die。这样来说,catch这个exception又有什么意义呢?

然而我总是看到很多说法说一定不要只throw就不管了,不去catch。

那到底应该怎么做呢?

回复内容:

有些时候我明明知道这样做绝不会引起exception,还要去catch吗?

又有些时候,被触发的错误是致命的,而且不是因为用户操作而引起的。这样,就算catch了,也是die。这样来说,catch这个exception又有什么意义呢?

然而我总是看到很多说法说一定不要只throw就不管了,不去catch。

那到底应该怎么做呢?

个人觉得错误处理方面,需要把握一个度,而对这个度的把握却又十分困难。

我的理解是:

  • 首先,基本、必要的exception一定要做。

  • 其次是并不需要尽可能的catch所有的exception,否则

    • 错误处理代码冗长

    • 执行效率问题

    • 有些exception catch了,但没有更好的办法处理;比如是代码的bug,反而应该尽可能的把代码的bug暴露出来,然后尽早解决。

  • 最后总结一下,异常处理需要把握一个度,我认为的这个度是:

    • 做基本和必要的异常处理

    • 不刻意为了追求完美而去做所有的异常处理,有些问题应该尽早暴露和解决

我的经验:

  1. Catch已知能够处理的异常,error logging其它异常让程序员手动去处理

  2. 异常处理分层次,在实现自己的模块时,将依赖的第三方模块的异常处理包含在自己的模块内

Java异常处理的10个最佳实践

  • 然而总有人喜欢像折腾轮子一样自己去总结一套,爬坑出来才发现别人造的轮子是那么的不错(笑)。

计算是catch了也不一定就是die了,捕获异常主要是为了处理异常而不是die掉,比如在发送邮件的时候因为网络原因而发送失败的时候,这个时候就抛出异常进行处理将失败的人物放进队列中等待再次处理。
异常是为了程序更健壮

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn