`
TonyLian
  • 浏览: 402020 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【第45条】在细节消息中包含失败-捕获信息

阅读更多

    这一条是写给那些自己写Exception的程序员的。

 

    为了在异常发生后捕捉失败原因,一个异常的字符串表示应该包括所有“对该异常有贡献”的参数和域的值。也就是说在异常所能“携带”的信息中,尽量多的加入对调试人员有用的信息。

 

    一个例子是 IndexOutOfBoundsException ,在这个下标越界的异常中,提示出了,最小小标、最大下标和当前下标的值,这样调试人员就可以很清楚的知道到底是上溢出了,还是下溢出了,溢出了多少。

 

    这一条对于自己扩展Exception类来说,非常有意义。扩展时不仅仅是继承已有的异常就行了,纵然可以通过异常的名称来获得错误原因,但这往往是不够的,失败发生当时的信息必须通过异常的字符串表示传达出来。

 

 

 

【Effective Java 学习笔记】系列连载专题请见:
http://tonylian.iteye.com/categories/64208

 

分享到:
评论

相关推荐

    Software-Engineering-Theory-and-Practice 3th

    ### 第四部分:需求捕获与分析 #### Chapter 4: 捕获需求 - **需求捕获方法**:介绍用于获取客户和用户需求的各种技术和工具。 - **需求规格说明**:阐述如何编写清晰的需求文档,以确保所有团队成员对项目目标有...

    Selenium WebDriver精讲

    第四章重点在于如何使用Selenium WebDriver定位页面上的元素。这一步对于自动化测试而言至关重要,因为测试脚本需要通过与页面元素互动来模拟用户行为。 **定位元素的方法**: - 通过ID、Class Name、XPath等多种...

    2005-2011年全新各大公司j2ee面试题汇总大全

    - 在一个`.java`源文件中可以包含多个类(不是内部类),但只能有一个公共类(public class),且该公共类的名字必须与文件名相同。 - 其他非公共类(即默认访问权限的类)数量不限。 #### 2. Java中的`goto` - ...

    asp.net(c#)机试题绝对全面

    第四个示例演示了如何将字符串中的每个字符转换为其对应的ASCII码,并以每五个字符一组的方式显示出来。 #### 1. **字符串拆分** - 使用`Substring`方法逐个提取字符串中的字符。 #### 2. **字符转ASCII码** - ...

    java最新面试文档

    - 在一个`.java`源文件中可以包含多个类(不是内部类),但只能有一个公共类(public class),且该公共类的名字必须与文件名相同。 - 其他非公共类(即默认访问权限的类)可以在同一个文件中定义,数量不受限制。 ...

    jsp/java 方向面试题

    ### jsp/java 方向面试题知识点详解 #### 一、final, finally, finalize的区别 - **final**: 这个关键字用于声明属性、方法或者类...- 不同点在于,运行时异常不需要在方法签名中声明,而检查异常则必须声明或捕获。

    java 面试题

    `Math.round()`方法会根据小数点后第一位四舍五入到最近的整数,但对于中间值(如.x5),它会向远离零的方向舍入。 #### 16\. 下面的代码有什么不妥之处? 这个问题描述不完整,没有给出具体的代码示例,无法分析其...

    java面试大全

    在一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?** 在一个`.java`文件中可以定义多个类,但是只能有一个公共类,并且该文件名必须与公共类名相同。其他类必须为私有或默认访问级别。 **2. ...

    绝对经典 C++初学者必看的50个建议

    同时,也要学会从失败中吸取教训,不断改进自己的方法。 #### 39. 学会使用第三方库 - **重要性**:第三方库可以提供丰富的功能。 - **建议**:根据自己的需求选择合适的第三方库,并学会正确地使用它们。这样不仅...

    TCP_IP详解卷1

    描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作...

    Ajax.基础教程3

    ### Ajax基础教程第三部分知识点详解 #### 一、Ajax概述 **Ajax(Asynchronous JavaScript and XML)**是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使...

    Java基础常见英语词汇

    9. **out**: 输出,`System.out`是Java中用于标准输出的流,通常用于在控制台打印信息。 10. **print**: 打印,用于输出数据到标准输出流的方法,不换行。 11. **line**: 行,代码中的一行或多行的逻辑单位。 12....

    Java程序员常见笔试题

    这意味着在`&&`运算符中,如果第一个表达式为false,则不会评估第二个表达式。而`&`运算符会始终评估两个表达式。 #### 五、HashMap与Hashtable的区别 - **线程安全性**:`Hashtable`是线程安全的,而`HashMap`...

    java面试宝典2014版

    一般异常是应用程序应该处理的情况,需在方法签名中声明或捕获。 ### 42. error与exception的区别 `error`表示系统级的错误,无法通过修改程序逻辑来避免;`exception`表示可以通过修改程序逻辑来避免的异常情况。...

    dns欺骗教程

    本教程将详细介绍如何在Windows环境下利用Cain软件进行DNS欺骗攻击,以及背后的原理和技术细节。 #### 二、测试环境配置 本次测试使用两台虚拟机作为实验平台,采用桥接模式连接以模拟真实的局域网环境。具体环境...

Global site tag (gtag.js) - Google Analytics