- 浏览: 150640 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
trydofor:
fujohnwang 写道为啥不是maven的问题?大概是因为 ...
jdk1.6.0_16 小bug -
fujohnwang:
为啥不是maven的问题?
jdk1.6.0_16 小bug -
trydofor:
参考资料http://supermmx.org/blog/20 ...
必须知道,别滥用-finally -
trydofor:
后续跟踪:使用javap分析finally块中return值h ...
必须知道,别滥用-finally -
trydofor:
(2)javap -c TestFor(1)javap -c ...
while(ture) 和 for(;;)
码工魄之JAVA异常处理
作者:臭豆腐[trydofor.com]
日期:2009-12-16
授权:署名-非商业-保持一致 1.0 协议
声明:拷贝、分发、呈现和表演本作品,请保留以上全部信息。
文档目录
1. 异常作用
如果把程序比作一棵树,那么,根系是需求,正常逻辑是主干,异常处理就是枝叶。
枝叶健康得当便有更多机会捕捉阳光雨露,歪斜则易断枝,过大还招风呢 ^_^)
因此,异常处理的好坏,恰当与否,都反映和影响着程序的健康状态与生命力。
JAVA异常有三大类,关系如下:[ST]
java.lang.Object |-java.lang.Throwable |-java.lang.Error |-java.lang.Exception |-java.lang.RuntimeException |
第一类,是受检异常(checked exception)。
用来提示用户注意和适当的处理,是可预期的和修复的。
第二类,是错误(error),由java.lang.Error及其子类组成。
用来表示程序外部错误,一般不可预期和修复,比如硬件资源。
第三类,是运行时异常(runtime exception),
由java.lang.RuntimeException及其子类组成。
用来表示程序内部错误,一般不可预期和修复,比如程序bug。
2. 大师总结
“Effective Java 第2版”的第九章,专门讲了异常,提到的经验有。[EJ]
- 第57条:只针对异常的情况才使用异常。
- 第58条:对可恢复的情况使用受检异常,对编程错误使用运行时异常。
- 第59条:避免不必要地使用受检异常。
- 第60条:优先使用标准的异常。
- 第61条:抛出与抽象相对应的异常。
- 第62条:每个方法抛出的异常都要有文档。
- 第63条:在细节消息中包含能捕捉的失败的信息。
- 第64条:努力使失败保持原子性。
- 第65条:不要忽略异常。
其中,
第60条指示我们,使用以下常用异常:
- IllegalArgumentException 参数不合适
- IllegalStateException 对象状态不合适
- NullPointerException 禁止null
- IndexOutOfBoundsException 下标越界
- ConcurrentModificationException 并发修改
- UnsupportedOperationException 操作为实现
第61条提到了异常链(exception chaining),经常用到的方法有:
- Throwable getCause()
- Throwable initCause(Throwable)
- Throwable(String, Throwable)
- Throwable(Throwable)
- Throwable getStackTrace()
- Throwable setStackTrace(StackTraceElement[])
3. 常用异常
对jdk1.6.0_16和spring-framework-3.0.0.RELEASE-with-docs.zip的源代码中使用
的异常进行了粗略的统计和排序,以下是过程和结果,也反映了第60条经验。
<tty> 异常的统计过程 | ||
|
4. 低级习惯
- 作为流程控制。违法异常设计初衷。
- 私吞异常。包括空catch块或printStackTrace等伪处理。异常,要么处理好,要么不处理。
- 异常覆盖。catch或finally块内引发异常,覆盖源头问题,信息丢失。
<java> 异常转换与防覆盖 | ||
|
5. 参考资料
- ST Sun的Java指南
- EJ Effective Java 第2版(ISBN 978-7-111-25583-3,机械工业出版社)
评论
3 楼
trydofor
2009-12-28
想要哪方面的呢?
基本原则,大师都列出了。
具体操作,一般都和业务逻辑挂钩,不好开刀。
基本原则,大师都列出了。
具体操作,一般都和业务逻辑挂钩,不好开刀。
2 楼
bllizard
2009-12-26
可以说的再具体些吗?
1 楼
hanjiangit
2009-12-22
继续说啊~~~
发表评论
-
Java 大括号语法糖
2012-07-04 16:53 1893Java 大括号语法糖 Java 的大括号(‘{’ ,curl ... -
jdk1.6.0_16 小bug
2011-06-01 17:10 2277汉语错误信息: [ERROR] \a9zones\a9id- ... -
JSR305 有助于提高代码健壮性
2011-05-18 16:44 2139JSR305 有助于提高代码健壮性 下载(java5+ ,据 ... -
Java常用工具类 -- ALOE 芦荟工程
2011-05-10 15:32 1318最牛全角互转半角 ... -
不可 T extends Iterator<E> & Iterable<E>
2011-05-09 10:50 1274//(a) public <T extends I ... -
必须知道,别滥用-finally
2011-04-21 10:57 1413public class Test { ... -
while(ture) 和 for(;;)
2011-03-28 11:10 1197多线程下的if,经常是while(...) 对于死等,在jdk ... -
小细节导致假调用
2011-03-17 11:40 884private final A9Loader< ... -
多线程情况下的一点差异
2011-03-14 17:04 825以下代码,没实际意义。 注意以下情况的不同点。 1)volat ... -
Number 为何不 Comparable
2011-02-18 09:55 1192现状 java 5+ package java.lang. ... -
synchronized 处发生了什么
2011-01-13 14:45 782问题 1.为何 map.clear(); 时的输出的毫秒数不连 ... -
讨论下 A9ID/A9IC 的短板
2011-01-12 16:21 882ID 生成策略,是各有各的道。且不问是否分布,多进程,多线程。 ... -
A9ID/A9IC
2011-01-12 09:35 1036第一版的A9ID 和A9IC已经出炉了. 定义如下 ... -
文字替换之效率
2010-11-02 10:40 11361. 常用方法 a) public String repl ... -
遍历 List 之效率
2010-11-02 09:30 12951. 常用遍历 List 之方法 遍历 List 方法 ... -
JAVA乱码你知道(DIY)
2010-11-01 13:45 10111. 四个涉及编码的环节 java开发中的乱码问题,有 ... -
超级基础:作用范围和生命周期
2010-10-30 14:29 773代码中的类或变量: 1。一旦创建了,就不在需要了。 ... -
码工考古之DataSync
2010-06-19 20:50 1021码工考古之DataSync 作者:臭豆腐[trydo ... -
IVY+IVYDE 非经典实践
2010-06-07 22:15 1089http://trydofor.com/a9w3-auhome ... -
日文编码SHIFT_JIS/MS932使用
2010-04-16 13:38 4108总结:在多数情况下,使用MS932代替SHIFT_JIS,可减 ...
相关推荐
零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理...
在Java编程中,异常处理是程序健壮性的重要组成部分,它确保了程序在遇到错误时能够优雅地处理问题,而不是突然崩溃。本文将深入探讨Java的异常处理机制,结合"Effective Java Exceptions"文档中的观点,来揭示如何...
在Java中,全局异常统一处理是一种常见的错误处理模式,它允许在一个单独的地方集中处理应用程序中抛出的所有异常。这种处理方式有助于简化代码,提高代码的可读性和可维护性。 要实现全局异常统一处理,Java提供了...
此文档主要讲解了java异常处理的基本问题,适合初学者,比较详细,有范例,有讲解.
Java开发中的异常处理和日志规范对于保持代码的健壮性和可维护性至关重要。下面将详细阐述这些要点: 1. **避免捕获可预检查的RuntimeException**:在Java中,像NullPointerException和IndexOutOfBoundsException...
简单,易懂的方式讲解C++与java异常处理的方法,两者的异同
什么时间使用runtimeException,什么时间使用Exception,大家有没有被困扰到?经整理,JAVA异常处理框架,以及如何构造自己的异常体系,讲得比较详细,值得一看。
Java 异常处理机制及应用 Java 异常处理机制是一种重要的技术,它能够帮助开发者处理 Java 语言中的错误和异常,从而提高程序的可靠性和稳定性。本文将从 Java 异常处理机制的原理、分类、抛出和捕获机制、原则等...
java异常处理思维导图,自己根据尚硅谷的视频总结的思维导图,主要针对容易遗忘的知识点,方便自己记忆
本文档提供了 Java 异常处理试题及答案,涵盖了异常处理的基本概念、关键字、异常类继承关系、异常处理的出口、多重 catch 块、异常抛出和捕捉等知识点。 一、Java 异常处理的基本概念 * 异常是一种对象,所有异常...
Java 异常处理机制及其在项目中的应用 Java 异常处理机制是 Java 语言中的一种错误捕获机制,用于处理程序中的错误和异常。Java 异常处理机制可以分为两大类:Checked Exception 和 Unchecked Exception。Checked ...
JAVA的异常处理机制 java学习,值得学习
java异常处理机制,异常的概念,发生的原因,throwable,捕获异常的简单思维导图
Java 异常处理是 Java 语言的核心组件之一,它是 Java 语言健壮性的一个重要体现。Java 把异常当作对象来处理,并定义一个基类 java.lang.Throwable 作为所有异常的超类。在 Java API 中已经定义了许多异常类,这些...
Java异常处理机制是一种用于有效管理程序运行时错误的方法。在Java中,通过try、catch和finally语句来实现异常捕获与处理: 1. **基础异常捕获**: - 当代码执行过程中出现如除数为零的`ArithmeticException`等...
Java异常处理是编程中至关重要的一个环节,它用于在程序执行期间处理错误和不正常的情况。本文深入探讨了高效Java异常处理框架,旨在提高代码的健壮性和稳定性。首先,文章介绍了异常的基本概念和Java异常体系结构。...
JAVA的异常处理(超详细说明)Java异常处理
作为两款被广泛使用的面向对象语言,C++和Java语言都支持异常处理机制。异常处理机制通常由编译器和异常处理机制的运行时支持函数共同实现,因此,如何正确高效地实现异常处理机制是设计编译器和异常处理运行时支持函数...