使用检测异常和不可检测异常:
1.在一般情况下,使用检测异常还是非检测异常的判断标准是客户端(调用者)能够处理它们。
像JDBC的SQLException是检测异常,把它设计成checked exception,不一定是合理,因为大多数情况下,调用者是无法处理的。当然有一种情况,调用者可以这样处理:它捕获SQLException,然后给用户提示:数据库执行失败,这也是一种处理方式。但是大多数情况下,这种异常是无法处理的,对这种大多数情况知道调用者无法处理的异常,应该被声明为unChecked Exception的。当某些情况调用者需要处理时,仍然可以捕获它进行处理,这样反而比较灵活。
对于一些业务异常,调用者可以处理它们,应该需要将它们设计成checked exception,如
DuplicatedUserException:用户注册时,选择了和别人重名的UserID;
LackOfBalanceException:用户提款时,余额不足。
等等
2.异常是抛出还是不要抛出
在很多程序中,捕获了异常,并把异常信息隐藏掉,是异常代码书写的反模式,调用者如果确定无法处理它,还是尽量抛出比较合理,异常信息无端地被忽略,对于调用者发现错误和调式都是不利的。笔者经常碰到这类代码,给笔者的调式带来了极大的不便。不仅如此,调用者调用你的代码时,本来可以处理的异常也被你给忽略了,所以在异常处理的时候,抛出还是不要抛出的标准很简单,那就是你的代码能不能处理它们,否则不要轻易捕获。
好文参考:
http://fluagen.blog.51cto.com/146595/38630/
分享到:
相关推荐
Checked Exception(受检的异常)2---马克-to-win java视频
Checked Exception(受检的异常)1---马克-to-win java视频
主要介绍了详解Java中Checked Exception与Runtime Exception 的区别的相关资料,这里提供实例帮助大家学习理解这部分内容,需要的朋友可以参考下
This paper outlines a design for an exception handling mechanism for C++. It presents the reasoning behind the major design decisions and considers their implications for implementation alternatives. ...
NULL 博文链接:https://caerun.iteye.com/blog/726904
Model类中创建HashMap并运用基本的数学算法,Program类中调用Model类并在通过UI实现,过程中对于可能出现的checked exception利用try-catch解决。
精彩编程与编程技巧-Win Api在VB中的妙用 ...
另外,method3()本身并不会抛出exception,可是它却声明会抛出CheckedException。在向你解释之前,让我们先来看看这个类的main()方法: public static void main( String[] args ) { ...
在java的世界里,异常是一个永恒的话题,很...使用checked exception 还是 unchecked exception?成为了衡量一个java程序员是高手还是菜鸟的标准。exception-framework提供了一种托管异常的方案,值得我们去研究学习。
checked unitreechecked unitree
前言 现在使用Kotlin的Android开发者已经越来越多了。 这门语言从一开始的无人问津,到后来成为Android开发的一级语言,再到后来Google官宣的Kotlin First。Kotlin正在被越来越多的开发者接受和认可。...
C++ and the Perils of Double-Checked Locking 关于单例模式C++实现的一些问题
Java中的异常分为三种类型:检查型异常(Checked Exception)、非检查型异常(Unchecked Exception)和错误(Error)。 检查型异常(Checked Exception): 这些异常在代码中必须进行显式处理,否则编译器会报错。 ...
xp checked debug 64位版本,如果要debug版本的符号文件,请到MSDN上下载。希望这个对你有帮助。
vista checked debug 64位版本,如果要debug版本的符号文件,请到MSDN上下载。希望这个对你有帮助。
C++ and the Perils of Double Checked Locking.zip
2. 运行时异常(RuntimeException) 3. 被检查的异常(Checked Exception) 1.增强程序堆内存的处理效率 2.设置缓存大小
WIN7 checked/debug 64位版本,如果在符号文件,自己到msdn上下载吧。
WIN7 checked debug 32位版本,如果要debug版本的符号文件,请到MSDN上下载。希望这个对你有帮助。