- 浏览: 154192 次
- 性别:
- 来自: 大连
-
文章分类
最新评论
-
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 1917Java 大括号语法糖 Java 的大括号(‘{’ ,curl ... -
jdk1.6.0_16 小bug
2011-06-01 17:10 2297汉语错误信息: [ERROR] \a9zones\a9id- ... -
JSR305 有助于提高代码健壮性
2011-05-18 16:44 2168JSR305 有助于提高代码健壮性 下载(java5+ ,据 ... -
Java常用工具类 -- ALOE 芦荟工程
2011-05-10 15:32 1376最牛全角互转半角 ... -
不可 T extends Iterator<E> & Iterable<E>
2011-05-09 10:50 1316//(a) public <T extends I ... -
必须知道,别滥用-finally
2011-04-21 10:57 1445public class Test { ... -
while(ture) 和 for(;;)
2011-03-28 11:10 1221多线程下的if,经常是while(...) 对于死等,在jdk ... -
小细节导致假调用
2011-03-17 11:40 914private final A9Loader< ... -
多线程情况下的一点差异
2011-03-14 17:04 848以下代码,没实际意义。 注意以下情况的不同点。 1)volat ... -
Number 为何不 Comparable
2011-02-18 09:55 1217现状 java 5+ package java.lang. ... -
synchronized 处发生了什么
2011-01-13 14:45 802问题 1.为何 map.clear(); 时的输出的毫秒数不连 ... -
讨论下 A9ID/A9IC 的短板
2011-01-12 16:21 921ID 生成策略,是各有各的道。且不问是否分布,多进程,多线程。 ... -
A9ID/A9IC
2011-01-12 09:35 1088第一版的A9ID 和A9IC已经出炉了. 定义如下 ... -
文字替换之效率
2010-11-02 10:40 11561. 常用方法 a) public String repl ... -
遍历 List 之效率
2010-11-02 09:30 13231. 常用遍历 List 之方法 遍历 List 方法 ... -
JAVA乱码你知道(DIY)
2010-11-01 13:45 10271. 四个涉及编码的环节 java开发中的乱码问题,有 ... -
超级基础:作用范围和生命周期
2010-10-30 14:29 798代码中的类或变量: 1。一旦创建了,就不在需要了。 ... -
码工考古之DataSync
2010-06-19 20:50 1075码工考古之DataSync 作者:臭豆腐[trydo ... -
IVY+IVYDE 非经典实践
2010-06-07 22:15 1110http://trydofor.com/a9w3-auhome ... -
日文编码SHIFT_JIS/MS932使用
2010-04-16 13:38 4176总结:在多数情况下,使用MS932代替SHIFT_JIS,可减 ...
相关推荐
Java 异常处理习题 Java 异常处理是 Java 编程语言中的一种重要机制,用于处理程序在运行时可能出现的错误或异常情况。下面是关于 Java 异常处理的习题和知识点总结: 一、Java 异常处理关键字 * Java 中用来抛出...
Java 异常处理论文:JAVA 异常处理的分析与研究 Java 异常处理是 Java 语言的一大特色,该文在介绍 Java 语言的异常处理技术的基础上,提出了异常处理的设计原则,从而为 Java 的程序设计实现提供技术上的借鉴。 ...
java异常练习题,北大青鸟学士后课后练习,主要是异常处理的小测验
14.java异常处理机制.zip14.java异常处理机制.zip14.java异常处理机制.zip14.java异常处理机制.zip14.java异常处理机制.zip14.java异常处理机制.zip14.java异常处理机制.zip14.java异常处理机制.zip14.java异常处理...
Java 异常处理机制是 Java 语言的重要标志之一,在程序设计过程中用来处理程序运行中的异常。Java 异常处理机制可以分为三部分:try 块、catch 块和 finally 块。try 块用于检测异常,catch 块用于捕获和处理异常,...
此文档主要讲解了java异常处理的基本问题,适合初学者,比较详细,有范例,有讲解.
本文将详细介绍 Java 异常处理机制的应用研究,包括 Java 异常体系统结构、异常分类与处理机制、异常处理的一般原则和异常处理框架等。 Java 异常体系统结构 Java 异常体系统结构如图 1 所示,Throwable 是所有...
什么时间使用runtimeException,什么时间使用Exception,大家有没有被困扰到?经整理,JAVA异常处理框架,以及如何构造自己的异常体系,讲得比较详细,值得一看。
因此,本文将从字节码层面分析Java的异常处理机制,探讨为什么finally块中的代码总是会执行,为什么推荐使用try-with-resources关闭资源等问题。 二、Java异常处理机制 1、Java异常分类 Java中的异常可以分为两大...
本文档提供了 Java 异常处理试题及答案,涵盖了异常处理的基本概念、关键字、异常类继承关系、异常处理的出口、多重 catch 块、异常抛出和捕捉等知识点。 一、Java 异常处理的基本概念 * 异常是一种对象,所有异常...
java异常处理机制,异常的概念,发生的原因,throwable,捕获异常的简单思维导图
JAVA的异常处理(超详细说明)Java异常处理
Java异常框架是Java编程语言中处理程序运行时错误和异常的核心机制。在Java中,异常是一种特殊的对象,用于表示程序运行过程中的不正常状态。Java的异常处理模型基于\"异常处理块\",包括try、catch、finally和throw...
Java 异常机制包括 Error、Exception、检查异常、运行时异常、异常处理和 throws 关键字等几个方面。 Error 是 Java 异常机制中的基类,表示编译时或者系统错误,例如虚拟机相关的错误、系统崩溃等。Error 无法恢复...
Java自定义异常处理详细介绍,包括了很多比较经典的案例,可以自己研究自定义异常
### Java异常与错误处理 #### 引言 Java设计的核心理念之一是“结构不佳的代码将不能运行”,这意味着尽可能在编译阶段捕获错误,确保代码的健壮性与可靠性。然而,即使编译器再强大,也无法检测出所有潜在的运行...
基于JAVA常见异常处理研究 JAVA异常处理是JAVA语言的重要机制,正确、合理地处理异常对电脑的稳定性和安全性有着极为重要的作用。异常主要有三类,包括异常处理语句的定义、捕捉异常和程序流程跳转等。 一、 JAVA ...
在深入探讨Java异常处理机制的底层细节时,我们通常需要借助字节码分析来获得更深层次的洞见。字节码是Java源代码在Java虚拟机(JVM)上执行的中间形式,它在编写Java程序和JVM执行之间起到桥梁的作用。通过分析字节码...
Java 异常处理机制是 Java 语言的重要特征之一。正确使用异常处理机制可以使程序的设计更加安全、可靠,但如果使用不当,則会让程序变得复杂难懂,从而影响程序效率。本文对 Java 异常处理方面容易出现的故障模式...