`

Java如何合理的设计异常?

阅读更多

译注】

        异常设计一直让我头疼不已,《Thinking in Java》中有关于异常设计的内容,但并不是很详细;《Effective Java》中应该有详细介绍吧,但一直没有精力来啃此书。八天前在JavaWorld电子杂志上发现这篇八年前的文章,有一种相见恨晚的感觉,一看作者竟是Bill Venners(前段时间拜读他的《深入Java虚拟机》),遂惶恐译之。

 

【摘要】

        本文是设计技术专栏文章,讨论有关异常设计的问题。本文关注何时使用异常,并举例演示异常的恰当使用。此外,本文还提供一些异常设计的基本原则。

 

        五个月前,我开始撰写有关设计对象的文章。本文是设计文技术系列文章的延续,讨论了有关错误报告和异常的设计原则。我假设读者已经知道什么是异常,以及异常是如何工作的。你若想回顾一下异常方面的知识,请阅读本文的姐妹篇《Java异常》。

 

【异常的好处】

        异常带来诸多好处。首先,它将错误处理代码从正常代码(normal code)中分离出来。你可以将那些执行概率为99.9%的代码封装在一个try块内,然后将异常处理代码(这些代码是不经常执行的)置于catch子句中。这种方式的好处是,正常代码因此而更简洁。如果你不知道如何处理某个方法中的一个特定错误,那么你可以在方法中抛出异常,将处理权交给其他人。如果你抛出一个检查异常(checked exception),那么Java编译器将强制客户端程序员(cilent programmer)处理这个潜在异常,或者捕捉之,或者在方法的throws子句中声明之。Java编译器确保检查异常被处理,这使得Java程序更为健壮。

 

【何时抛出异常】

        异常应于何时抛出?答案归于一条原则:“如果方法遇到一个不知道如何处理的意外情况(abnormal condition),那么它应该抛出异常”。不幸的是,虽然这条原则易于记忆和引用,但是它并不十分清晰。实际上,它引出了另一个的问题:什么是意外情况?这是一个价值6.4万美元的问题。是否视某特殊事件为“意外情况”是一个主观决定。其依据通常并不明显。正因为如此,它才价值不菲。

 

        一个更有用的经验法则是:“在有充足理由将某情况视为该方法的典型功能(typical functioning )部分时,避免使用异常”。因此,意外情况就是指方法的“正常功能”(normal functioning)之外的情况。请允许我通过几个例子来说明问题。

 

分享到:
评论

相关推荐

    Java基础入门教程 第7章 Java中的异常处理(共26页).ppt

    异常处理不仅仅是捕获错误,更重要的是通过合理的异常设计,让程序能更好地恢复状态,或者至少提供有意义的错误信息给用户。学习并熟练掌握Java异常处理,将有助于编写出更加稳定和健壮的程序。在实际开发中,应尽量...

    Java异常处理终结篇——如何进行Java异常处理设计 - 望远的个人页面 - 开源中国社区1

    6. **异常的层次结构**:设计异常时,尽量让异常类位于适当的层次结构中,以便捕获和处理。例如,将特定的业务异常继承自更通用的异常类。 7. **不要在catch块中仅打印堆栈跟踪**:虽然这对于调试很有帮助,但在...

    什么是Java中的异常处理机制?Java中的异常分为哪些类型?(java面试题附答案).txt

    Java作为一种广泛使用的编程语言,其设计之初就考虑到了程序在运行过程中可能遇到的各种异常情况。为了更好地控制这些异常,Java提供了一套完善的异常处理机制,使得开发者能够在编写程序时有效地管理错误和异常情况...

    java程序设计课件

    Java程序设计是计算机科学中的一个重要领域,主要涉及使用Java编程语言进行软件开发。Java是一种广泛应用于服务器端、桌面应用、移动应用(尤其是Android平台)的高级编程语言。天津大学计算机系提供的这门java程序...

    Java异常处理总结

    ### Java异常处理总结 #### 一、Java异常的基础知识 在Java编程中,异常处理是一项极其重要的技术。...通过合理设计异常处理逻辑,不仅可以增强程序的健壮性,还能提升用户体验,减少后期维护的成本。

    JAVA实验九异常处理.pdf

    通过上面的知识点,可以看出异常处理在Java程序设计中的重要性,良好的异常处理可以提高程序的健壮性和用户体验。此外,合理地使用异常类的层次结构和自定义异常可以帮助开发者创建更为清晰、可维护的代码。

    JAVA程序设计——异常和断言

    JAVA程序设计中的异常和断言是程序开发过程中的重要概念,它们帮助开发者处理程序运行时可能出现的问题,确保程序的稳定性和可靠性。 异常处理是JAVA语言中的一个关键特性,用于处理程序执行过程中出现的非正常情况...

    JAVA程序设计课程设计

    Java程序设计课程设计是计算机科学领域中一个重要的实践环节,旨在帮助学生深入理解和掌握Java编程语言,提升软件开发能力。在这个课程设计中,学生通常会被要求完成一系列的任务,包括但不限于编写控制台应用、图形...

    JAVA程序设计说明书

    2.1 异常处理:Java使用try-catch-finally结构来捕获和处理运行时错误,增强程序的健壮性。 2.2 多线程:Java内置了多线程支持,通过Thread类或实现Runnable接口,可以在一个程序中同时执行多个任务。 2.3 内存...

    处理异常java程序实验报告

    本实验将通过具体的案例(`Student`类)来探讨如何设计合理的异常处理逻辑。 #### 实验目的 1. **掌握异常处理的基本原理:**理解异常的概念、类型以及如何通过捕获和抛出异常来实现程序的健壮性。 2. **学会在类中...

    Java程序设计习题集下载

    对知识点的总结以及内容的全面性也使得《Java程序设计习题集》具有一定的手册特性,非常适合复习,同时也方便教师出题,使得各章节的试题容易在试卷中分布均匀合理。在本习题集中的编程题和趣味题还有可能采用其他...

    java程序中的异常处理

    异常处理是Java编程中的一个重要组成部分,通过合理设计异常类和使用异常处理结构,可以有效地提升程序的健壮性和可维护性。在实际开发中,合理地使用异常处理不仅可以帮助我们更好地管理程序的错误状态,还能提高...

    java API设计

    Java API设计是一个重要的主题,它关乎到软件开发的可维护性、可扩展性和易用性。API(Application Programming Interface)是一组预定义的函数、类、接口和常量,允许开发者通过调用这些元素来实现特定功能,而无需...

    java异常总结

    ### Java异常总结 #### 一、Java异常概述 在Java编程语言中,异常处理机制是一项非常重要的特性...掌握Java中的异常处理机制,并结合实际项目需求合理地运用各种异常处理技巧,是每一个Java开发者都需要具备的能力。

    java编程中异常处理的优劣观

    在实际编程中,理解并合理运用Java异常处理机制至关重要。正确地捕获和处理异常可以帮助我们编写出更加健壮的程序,同时避免因滥用异常而导致的反模式。对于性能敏感的代码,应尽量减少异常的使用,避免无谓的性能...

    java 毕业设计指南与项目实践源码

    掌握Java的基础语法、类、接口、异常处理、集合框架等内容是完成毕业设计的基础。 其次,Java毕业设计通常涵盖以下几个方面: 1. **需求分析**:明确项目的目标和功能,确定系统的需求。这一步需要充分沟通,了解...

    java 异常案例

    在Java编程语言中,异常处理是程序设计中一个非常重要的组成部分。它能够帮助开发者有效地捕捉并处理程序运行时出现的问题,避免因错误而导致程序崩溃,从而提高软件的健壮性和用户体验。本文将通过一个具体的Java...

    java 课程设计报告

    在课程设计中,合理运用设计模式可以提高代码的可维护性和可扩展性。 11. **测试与调试**:使用JUnit进行单元测试,确保代码的正确性。同时,学会使用IDE的调试工具定位和修复程序错误。 12. **文档编写**:一份...

    Java程序设计 7 异常处理.pptx

    通过合理地处理异常,程序可以在遇到问题时优雅地失败,而不是突然崩溃,为用户提供更好的体验。此外,通过捕获并记录异常,可以帮助进行调试和日志分析,从而改进代码质量。因此,理解和掌握Java的异常处理机制是每...

Global site tag (gtag.js) - Google Analytics