【转载地址】:http://www.oschina.net/translate/10-exception-handling-best-practices-in-java-programming
异常处理是书写 强健 Java应用的一个重要部分。它是关乎每个应用的一个非功能性需求,是为了优雅的处理任何错误状况,比如资源不可访问,非法输入,空输入等等。Java提供了几个异常处理特性,以try,catch和 finally 关键字的形式内建于语言自身之中。Java编程语言也允许你创建新的异常,并通过使用 throw 和 throws关键字抛出它们。事实上,异常处理不仅仅是知道语法。书写一个强健的代码更多的是一门艺术而不仅仅是一门科学,这里我们将讨论一些关于异常处理的Java最佳实践。这些 Java 最佳实践 甚至被标准JDK库,以及一些开源代码所追随,以更好的处理错误与异常。这也成为了Java程序员书写强健代码的手册。
super0555
翻译于 2天前
1人顶
顶 翻译的不错哦!
其它翻译版本(1)
Java 编程中异常处理的最佳实践
这里是我收集的10个Java编程中进行异常处理的10最佳实践。在Java编程中对于检查异常有褒有贬,强制处理异常是一门语言的功能。在本文中,我们将尽量减少使用检查型异常,同时学会在Java编程中使用检查型VS非检查型异常。
1)为可恢复的错误使用检查型异常,为编程错误使用非检查型错误。
选择检查型还是非检查型异常,对于Java编程人员来说,总是让人感到困惑。检查型异常保证你对错误条件提供异常处理代码,这是一种从语言到强制你编写健壮的代码的一种方式,但同时会引入大量杂乱的代码并导致其不可读。当然,如果你有替代品和恢复策略的话,捕捉异常并做些什么看起来似乎也在理。在Java编程中选择检查型异常还是运行时异常,更多信息参考 checked vs unchecked exceptions。
等PM
翻译于 2天前
0人顶
顶 翻译的不错哦!
2)在finally程序块中关闭或者释放资源
这在Java编程中,是一个广为人知的最佳实践,在处理网络和IO类的时候,相当于一个标准。在finally块中关闭资源, 在正常和异常执行的情况下,保证之前和稀缺资源的合理释放,这由y finally块保证。从Java7开始,该语言有了一项更有趣的功能:资源管理自动化或者ARM块能实现这一功能。尽管如此,我们仍然要记住在finally块中关闭资源,这是对于释放像FileDescriptors这类,应用在socket和文件编程的情况下的有限资源很重要的。
3)在堆栈跟踪中包含引起异常的原因
很多时候,当一个由另一个异常导致的异常被抛出的时候,Java库和开放源代码会将一种异常包装成另一种异常。日志记录和打印根异常就变得非常重要。Java异常类提供了 getCause()方法来检索导致异常的原因,这些(原因)可以对异常的根层次的原因提供更多的信息。该Java实践对在进行调试或排除故障大有帮助。时刻记住,如果你将一个异常包装成另一种异常时,构造一个新异常要传递源异常。
等PM
翻译于 2天前
0人顶
顶 翻译的不错哦!
4)始终提供关于异常的有意义的完整的信息
异常信息是最重要的地方,因为这是程序员首先看到的第一个地方,这里你能找到问题产生的根本原因。这里始终提供精确的真实的信息。例如,对比IllegalArgumentException 异常的两条异常信息:
消息 1: "Incorrect argument for method"
消息 2: "Illegal value for ${argument}: ${value}
第一条消息仅说明了参数是非法的或者不正确,但第二条消息包括了参数名和非法值,而这对于找到错误的原因是很重要的。在用Java编程中编写异常处理代码的时候,始终遵循该Java最佳实践。
5)避免过度使用检查型异常
检查型异常在强制执行方面有一定的优势,但同时它也破坏了代码,通过掩盖业务逻辑使代码可读性降低。只要你不过度使用检查型异常,你可以最大限度的减少这类情况,这样做的结果是你会得到更清洁的代码。你同样可以使用Java7的新功能,像one catch block for multiple exceptions 和 automatic resource management以移除重复项。
等PM
翻译于 2天前
0人顶
顶 翻译的不错哦!
6)将检查型异常转为运行时异常
这是在像Spring之类的多数框架中用来限制使用检查型异常的技术之一,大部分出自于JDBC的检查型异常,都被包装进DataAccessException中,而(DataAccessException)异常是一种非检查型异常。这是Java最佳实践带来的好处,特定的异常限制到特定的模块,像 SQLException 放到DAO层,将意思明确的运行时异常抛到客户层。
7)记住对性能而言,异常代价高昂
需要记住的一件事是异常代价高昂,同时让你的代码运行缓慢。假如你有方法从ResultSet(结果集)中进行读取,这时常会抛出SQLException异常而不会移到下一元素,这将会比不抛出异常的正常代码执行的慢的多。因此最大限度的减少不必要的异常捕捉和移动,那里没有什么固定的原因。不要仅仅是抛出和捕捉异常,如果你能使用boolean变量去表示执行结果,可能会得到更整洁,更高性能的解决方案。修正错误的根源,避免不必须要的异常捕捉。
等PM
翻译于 2天前
0人顶
顶 翻译的不错哦!
8)避免catch块为空
没有什么比空的catch块更糟糕的了,因为它不仅隐藏了错误和异常,同时可能导致你的对象处于不可使用或者脏的状态。空的catch块只能变得无意义,如果你非常肯定异常不会继续以任何方式影响对象状态,但在程序执行期间,用日志记录错误依然是最好的(方法)。对于在Java编程中编写异常处理代码,这不仅仅是一个Java最佳实践,而是一个最通用的实践。
9)使用标准异常
我们的第九条最佳实践建议使用标准和内置的Java异常。使用标准异常而不是每次创建我们自己的异常,对于维护性和一致性,不管是现在还是以后,都是最好的选择。重用标准异常使代码更具可读性,因为大部分Java开发人员对标准的像源自于JDK的RuntimeException 异常,IllegalStateException 异常,IllegalArgumentException 异常或者 NullPointerException异常,(开发者)他们能一眼就知道每种异常的目的,而不是在代码里查找或者在文档里查找用户定义的异常的目的。
10)记录任何方法抛出的异常
Java提供了throw和throws关键字来抛出异常,在javadoc中用@throw记录任何方法可能会抛出的异常。如果你编写API或者公共接口,这就变得非常重要。任何方法抛出的异常都有相应的文档记录,这样你就能下意识的提醒任何使用(该方法)的人。
这些就是所有在Java编程中在处理异常的时候需要遵循的最佳实践。让我们知道了什么是在Java编程中编写异常处理代码时需要遵循的实践。
分享到:
相关推荐
"java编程中异常处理的方法与技巧" ...以上这些都是在java编程过程中进行处理异常时我们要遵循的异常处理最佳实践。通过在java编程中使用这些最佳实践,我们代码的可读性、执行效率、鲁棒性都将有大大地提高。
通过本文的学习,您将了解Java异常的分类、为什么finally块中的代码总是会执行、Java异常处理的不规范案例、Java异常处理的最佳实践等。 一、概述 Java异常处理并不是一个简单的事情,不仅初学者很难理解,甚至...
java编程异常处理,exception
8. JAVA 异常处理:资源中没有提到 JAVA 异常处理的知识点,但是在实际开发中,异常处理是非常重要的,所以开发者需要学习和掌握 JAVA 异常处理的知识点。 本资源提供了一个完整的 JAVA 编程题全集,涵盖了大量的...
以下10个最佳实践可以帮助Java开发者更好地处理异常,提升代码质量: 1. **区分检查型异常与非检查型异常**: - 检查型异常(如IOException)通常表示可恢复的错误,需要在调用者处显式处理。 - 非检查型异常(如...
在《JAVA并发编程实践》中,这些便利工具的创造者不仅解释了它们究竟如何工作、如何使用,还阐释了创造它们的原因,及其背后的设计模式。 编辑推荐 《JAVA并发编程实践》既能够成为读者的理论支持,又可以作为构建...
2. **异常处理**:Java中的异常处理是一个重要的实践领域,学习如何正确地使用try-catch-finally语句块以及不同类型的异常类,能帮助开发者编写出健壮的代码,提高程序的稳定性。 3. **集合框架**:Java集合框架...
Java编程语言是面向对象的、跨平台的编程语言,由Sun Microsystems公司于1995年推出,目前广泛应用于各种领域,如Web开发、移动应用、企业级应用、大数据处理等。"Java编程200例(附:JAVA文档完全解读中文版)"是一...
内容概要:本文详细介绍了 Java 编程中的输入类型异常,重点讲解了 NumberFormatException 和 ClassCastException 的概念、原因及捕获处理方法。并通过具体示例展示了如何在实际应用中有效处理这些异常,从而提高...
《洪恩JAVA编程之道》是一本深入探讨Java编程技术的书籍,其随碟代码提供了丰富的实践示例,帮助读者巩固理论知识,提升编程技能。在Java编程的世界里,理解和掌握这些知识点至关重要,因为它们构成了Java程序员的...
书中涵盖了类、对象、接口、多态性、异常处理、集合框架、输入/输出、并发编程等Java开发的关键主题,为读者构建了一个全面的Java学习体系。 阿里巴巴Java开发手册,又称为《阿里巴巴Java开发规范》,是阿里巴巴...
3. **异常处理**:Java的异常处理机制是其强项之一,书中详细阐述了如何使用try-catch-finally语句块来捕获和处理异常,以及如何自定义异常。 4. **集合框架**:Java集合框架是存储和管理数据的重要工具,书中涵盖...
异常处理是Java程序中一个重要的部分。书中深入分析了异常的分类、抛出和捕获机制,以及如何优雅地处理异常,避免程序崩溃,增强程序的健壮性。 #### 设计模式和最佳实践 《Java编程规范(第3版)》涵盖了多种设计...
在Java编程中,异常处理是确保程序稳定性和健壮性的重要机制。本文将深入探讨Java异常处理的核心概念、分类以及如何在实际开发中有效地管理和捕获异常,从而帮助开发者提升代码质量。 #### 一、Java异常概述 Java...
10. **异常处理**:网络编程中可能会遇到各种异常情况,如连接中断、数据传输错误等。因此,适当的异常处理机制是必须的,以确保程序的健壮性。 本书的源代码实例将覆盖以上这些概念,并通过实践加深理解。读者可以...
Java中的异常处理是一个重要的错误管理机制。源代码中可能包含try-catch-finally结构,教你如何捕获并处理程序运行时可能出现的问题。 4. **SWT(Standard Widget Toolkit)**: SWT是Java的一个图形用户界面...
在这个精心整理的百个实例集合中,涵盖了Java编程的多个方面,包括基础语法、面向对象、异常处理、多线程、I/O流、网络编程、数据库操作、图形用户界面(GUI)设计等核心知识点。 1. **基础语法**:Java的基础语法...
《Java完美编程(第3版)》是一本深入讲解Java编程技术的专业书籍,旨在帮助读者掌握Java编程的核心概念和最佳实践。此书共分为20个教程,涵盖了从基础到高级的广泛主题,旨在构建一个全面且深入的Java知识体系。 ...
Java异步编程是一种提高应用程序性能和响应速度的关键技术,特别是在处理I/O密集型任务时。在Java中,异步编程允许程序在等待某些操作完成(如网络请求、文件读写等)的同时,继续执行其他任务,从而提高了整体的...
9. **错误处理与调试**:学习如何处理网络编程中常见的异常,以及如何调试网络应用程序,提高代码的健壮性。 10. **最新技术**:第三版可能会涵盖Java的新特性和更新,例如Java 8及更高版本中的新功能,以及对Java...