译注】
异常设计一直让我头疼不已,《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异常的人很多,但能合理使用的却不多,Java异常处理设计是一个冷门的话题,但好的异常设计会让程序有质的变化,所以本文从各个方面分析便总结了,在J
对知识点的总结以及内容的全面性也使得《Java程序设计习题集》具有一定的手册特性,非常适合复习,同时也方便教师出题,使得各章节的试题容易在试卷中分布均匀合理。在本习题集中的编程题和趣味题还有可能采用其他...
鼓励学生采用面向对象的设计思想,合理划分模块和类,提高代码的可维护性。 项目中涉及数据库操作时,建议使用Java中的JDBC技术,同时引导学生学习使用预处理语句等安全的数据库操作方法。 鼓励学生在项目中加入异常...
它遵循了软件开发的最佳实践,包括模块化的设计、分层架构的实现以及合理的异常处理机制等。这使得学生在阅读和使用代码的过程中,能够深入了解Spring Boot框架的应用技巧,提升编程能力和系统设计能力。 此外,该...
8、代码采用模块化设计,特别是使用面向对象封装,类的定义、包的定义合理,内部类和匿名类合理; 9、使用Java集合类处理工作列表; 10、Java语言的基本语法和基本控制流程正确使用,;使用正则表达式正确处理URL...
资源名称:《学通Java的24堂课》PDF内容简介:《学通Java的24堂课》以24堂课的形式,从初中级用户的角度进行科学合理的设计,全面讲述了使用java语言进行程序开发的必备知识和技能,突出学、练、用结合。主要内容...
JAVA游戏开发课程设计报告 ———————————————————————————————— 作者: ———————————————————————————————— 日期: Java课程设计 题目:多线程端口...
设计的主要内容: 第一部分,调查国内外的研究与发展动态以及本系统的价值与意义。...(4)运用合理有效的设计方案独立完成系统功能模块设计 (5)进行可行性技术分析。 合理引用文献数据、观点、原理等
这是一个关于Spring Boot和MySQL的网上租赁系统的完整源码。这个系统是基于Spring Boot框架和MySQL数据库进行设计和实现的...总的来说,这个系统是一个功能完善、设计合理的网上租赁系统,可以作为学习和参考的好例子。
同时,通过合理的数据库设计,保证了数据的完整性和安全性。此外,系统还考虑了性能优化和异常处理等方面的问题,确保在高并发场景下仍能保持稳定运行。 这份资源不仅适合即将进行毕业设计的同学参考学习,也适用于...
通过合理的架构设计、严格的权限管理、完善的异常处理机制等措施,确保了系统的稳定运行和数据安全。同时,系统采用了模块化的设计思想,使得各功能模块之间耦合度低、可维护性好,为后续的二次开发定制提供了便利。...
通过以上功能设计和实现,局域网监听软件能够帮助管理员全面监控和管理局域网环境,提高网络运行效率和安全性,确保网络资源的合理利用和稳定运行。同时,软件还具有灵活的扩展性和定制化功能,可以根据实际需求进行...
课程设计 题 目:处理机管理模拟系统的设计与 实现 学生姓名: 学 院:信息工程学院 系 别:软件工程系 专 业:软件工程 班 级: 指导教师:副教授 讲师 2013年1月8日 内蒙古工业大学课程设计任务书(四) 学院(系...
同时,系统还提供了风险评测和投资建议功能,帮助用户合理规划资产,降低投资风险。 在便捷性方面,系统支持多种支付方式,用户可以随时随地进行投资操作。此外,系统还提供了丰富的报表和数据分析工具,帮助用户...
若初始余额的参数为负数,则抛出一个自定义异常并在当前构造方法中进行处理。 ■ 重写方法 withDraw ,要求支取的金额为 100 的整数倍,并且当日支取金额不能超过 5000,支取金额不允许透支。每进行一次操作应向 ...
3.8.1 基本功训练1——合理设定变量类型 82 3.8.2 基本功训练2——变量自增运算 83 3.8.3 基本功训练3——类型转换 84 3.8.4 基本功训练4——运算符的应用 84 3.8.5 基本功训练5——求最大值 85 3.8.6 基本功...
宿舍分配与调整:系统支持宿舍分配功能,管理员可以根据学生人数和宿舍情况进行智能分配,同时支持学生之间的宿舍调整,确保宿舍资源的合理利用。 宿舍楼层与房间管理:管理员可以管理宿舍楼层和房间信息,包括楼层...
该文档包含了一系列Java基础知识笔试题,涵盖了面向对象编程、数据类型、控制流、异常处理、多线程等方面的内容。每个问题都设计为测试候选人对Java语言的基本理解和应用能力。 **适用人群:** - Java初学者和初级...
4. 异常处理:系统支持对配送过程中出现的异常情况进行记录和处理,如订单取消、地址变更等。 5. 统计报表:系统提供丰富的统计报表功能,帮助企业分析业务数据,优化配送流程。 本系统具有良好的扩展性和可定制性...
复习、巩固 JAVA 语言的基础知识,进一步加深对 JAVA 语言的理解和掌握。本次课程旨在为学生提供独立实践和合作的机会,将课本上的理论知识和实际有机结合,旨在锻炼学生分析解决实际问题的能力,提高其适应实际、...