异常处理

java项目中的常用的异常处理情况

1)为可恢复的错误使用检查型异常,为编程错误使用非检查型错误。
  选择检查型还是非检查型异常,对于Java编程人员来说,总是让人感到困惑。检查型异常保证你对错误条件提供异常处理代码,这是一种从语言到强制你编'写健壮的代码的一种方式,但同时会引入大量杂乱的代码并导致其不可读。当然,如果你有替代品和恢复策略的话,捕捉异常并做些什么看起来似乎也在理。在Java编程中选择检查型异常还是运行时异常,更多信息参考checkedvsuncheckedexceptions。

2)在finally程序块中关闭或者释放资源
  这在Java编程中,是一个广为人知的最佳实践,在处理网络和I0类的时候,相当于一个标准。在finally块中关闭资源,在正常和异常执行的情况下,保证之前和稀缺资源的合理释放,这由yfinally块保证。从Java7开始,该语言有了一项更有趣的功能:资源管理自动化或者ARM块能实现这一功能。尽管如此,我们仍然要记住在finally块中关闭资源,这是对于释放像
FileDescriptors这类,应用在socket和文件编程的情况下的有限资源很重要的。

3)在堆栈跟踪中包含引起异常的原因
很多时候,当一个由另一个异常导致的异常被抛出的时候,Java 库和开放

源代码会将一种异常包装成另一种异常。日志记录和打印根异常就变得非常重要。Java异常类提供了getCause 方法来检索导致异常的原因,这些(原因)可以对异常的根层次的原因提供更多的信息。该Java实践对在进行调试或排除故障大有帮助。时刻记住,如果你将一个异常包装成另一种异常时,构造一个新异常要传递源异常。

4)始终提供关于异常的有意义的完整的信息

      异常信息是最重要的地方,因为这是程序员首先看到的第一个地方,这里你能找到问题产生的根本原因。这里始终提供精确的真实的信息。例如,对比IllegalArgumentException异常的两条异常信息:

消息1:“Incorrect ar gument formethod”

消息2:“Illegalvaluefor$ {argument} :$ {value}第一条消息仅说明了参数是非法的或者不正确,但第二条消息包括了参数名和非法值,而这对于找到错误的原因是很重要的。

5)避免过度使用检查型异常

      检查型异常在强制执行方面有-定的优势,但同时它也破坏了代码,通过掩盖业务逻辑使代码可读性降低。只要你不过度使用检查型异常,你可以最大限度的减少这类情况,这样做的结果是你会得到更清洁的代码。你同样可以使

      用Java7的新功能,像onecatchb lockformultipleexceptions和automati cr esourc emanagement以移除重复项。

 

来源:百度

原文地址:https://www.cnblogs.com/jinseliunian/p/9942892.html