- 浏览: 921378 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (322)
- Hibernate研究&源码 (27)
- Server (10)
- Coder碎语 (64)
- EnglishMulling (11)
- About XML (1)
- persistence (12)
- Core Java & OO (23)
- Java EE (6)
- JavaScript/JSON/Ajax/ext... (22)
- 我的读书笔记 (16)
- Source Codes Study (29)
- workFlow/jBPM (22)
- OFBiz: Open For Business (1)
- 项目积累 (21)
- srcStudy_acegi (1)
- Cache/Ehcache... (9)
- Java Test/JUnit.. (7)
- maven/ant (2)
- 设计模式 (1)
- SOA/cxf/ws-security (2)
- Android (4)
- 云计算/Hadoop (2)
- 加密/签名 (1)
- 正则表达式 (1)
- htmlparser (1)
- 操作系统 (5)
- DB (1)
最新评论
-
天使建站:
这里这篇文章更详细 还有完整的实例演示:js跳出循环 ...
jQuery中each的break和continue -
heshifk:
刚刚我也遇到同样的问题,然后就在纠结为什么不能直接使用brea ...
jQuery中each的break和continue -
masuweng:
不错写的.
集万千宠爱于一身的SessionImpl:get研究(四): Hibernate源码研究碎得(8) -
muzi131313:
这个老是忘,做一下笔记还是挺好的
jQuery中each的break和continue -
lg068:
data = data.replace("\n&qu ...
项目小经验: eval与回车符
checked or runtime or unchecked?
"MalformedURL-
Exception, for instance, indicates that the address given for the service is not
valid. To recover from this exception, the application will at minimum need to be
reconfigured and may have to be recompiled. No try/catch block will be able to
recover gracefully, so why should your code be forced to catch and handle it?"
看SpringInAction时原RMI时,看到了上面的一段话,再结合这些天项目中的业务逻辑和异常处理,想通了异常处理时的一些困惑.
Java中的异常处理要比C++中强大的多(书上说的,这个我也能多多少少地体会的到),不过当初自学Java学到异常这一块很是苦恼,当时由于没有多少项目经验也就想体会不到Java里异常的优点.只是停留在字面上,"死盯"着"Exception"这个单词看,只是从它自己的类图里记住了Exception分RuntimeException和checked exception,根本不理解把Exception分成这几种情况的初衷,当然也不可能很好很自觉地用到自己的设计中来.
看到SpringInAction里的那段话后,再回过头来研读了Sun提供的Tutorial里关于"
The Three Kinds of Exceptions"(http://java.sun.com/docs/books/tutorial/essential/exceptions/catchOrDeclare.html)
的描述,现在一下子明白多了.
Exception这个单词说的就是正常业务逻辑之外的那想"不正常"(也就是"异"这个字的来源),不过这个"不正常"又可分成多种情况.
(1),用咱们的大白话有些不正常是用户自身造成的,就像SunTutorial里所说的那样,本来业务逻辑要求用户输入一个存在的可读的文件的路径给系统,可用户由于种种原因输入不合法,这种情况下,一个Well-written的系统就该报出Exception来告诉用户文件路径有误,并在用户重新输入路径后进入正常的处理逻辑.
(2),还有的不正常情况是那些用户和系统都无能为力的,比如说SunTutorial中提到的那种硬盘坏了.当这种"不正常"发生时用户很难像"文件不合法"那样就可以轻易就可解决掉的,针对这种情况,Java就提供了Error这个类.对于这个Error当然也可用Catch来捉住它,不过捉住后也没什么多大的用处(现在能想到一个好处就是把这个Error所描述的信息给更友好地报告给用户).
(3),上面的(1)和(2)都属于系统外部的(一个是用户自身,一个是硬件或网络情况),最后一种自然也就是系统自身了,像我们常看到的那种NullPointerException,NoSuchMethodException...这些异常的报出完全说明了系统自身不够robust,设计不够合理,Coding不够仔细.当这种Exception报出后,除了整个系统大修并重新编译外别的无药可救.这也就是"Runtime exceptions are not subject to the Catch or Specify Requirement. The application can catch this exception, but it probably makes more sense to eliminate the bug that caused the exception to occur."
现在再回过头来回答标题里的问题:我们所面对的"不正常"以check的角度来分有两种:checked和unchekced(呵呵,有些废话的意思).而unchecked分为Error和Exception里除RuntimeException中别的子类.
刚看到的一个新链接: http://www.javaworld.com/javaworld/jw-11-2007/jw-11-exceptionset.html
评论
If there is nothing that can be done to recover from an SQLException,why are we forced to catch it?
That's because SQLException is treated as a "one size fits all" exception for problems related to data access.Rather than hava a different exception type for each possible problem, SQLException is the exception that's thrown for all data access problems.
What we need is a hierarchy of data access exceptions that are descriptive but not directly associated with a specific persistence framework.
---摘自<Spring In Action>
应该是"而unchecked分为Error和Exception里RuntimeException及其子类".
再次感谢!
最后一句:而unchecked分为Error和Exception里除RuntimeException中别的子类.
好像说反了吧?! “Exception里除RuntimeException中别的子类”这个好像是checked exception。
runtimeException及其子类和Error及其字类属于unchecked exception之列。
发表评论
-
Java实现将源文件中的注释替换成空行。
2011-12-27 15:39 2788以Css文件为例, 为了能准确地定位,需要把段注释也要替换 ... -
JVM内存溢出问题分析排查
2011-10-25 10:27 3740内存溢出与数据库锁表的问题,可以 ... -
ant运行java程序时, 它不能加载指定properties文件, 怎么处理?
2011-07-27 17:47 3715运行时, 目录结构如下: . ... -
关于用多线程时任务分配与结果收集的问题的设计讨论
2011-07-27 10:47 2073假定任务是这样的: 对于给定字符串,如“threadTe ... -
File类createNewFile时的一个注意点
2010-11-03 17:42 26559今天体会到一个陷阱,刚开始还觉得是JDK的bug呢 ... -
要static还是不要static?
2010-09-25 14:18 1202内部接口声明加不加static没什么不同 附件Inn ... -
线程join方法的理解
2010-08-22 11:11 2428一个偶然机会,又接 ... -
should effort go into reuse above maintainability and extensibility?
2010-06-04 09:37 1299Master and Student Maste ... -
对接口编程的一些思考
2009-04-10 08:41 1249对一个问题的持续深追,又想起了Java中接口编 ... -
JVM创建一个新对象到底有多大的代价?
2009-04-02 09:54 1615好像是在听一人讲JVM性能调优方面事时, 知道 ... -
序列化(二): 为什么要序列化?
2009-03-20 08:25 1939在readResolve()方法与序列化中, 由r ... -
序列化(一): readResolve()方法与序列化
2009-03-17 10:08 3113在CJC(一) 中提到一个问题,即 readResolve方 ... -
Core Java: 继承覆盖时的一个问题
2009-02-23 21:01 1256看如下Java代码: public class Main { ... -
CoreJava: 父子类都需要实现同一个接口?
2009-02-18 16:16 2447前些写用LinkedHashSet带来的思考(http ... -
Spring中配置Qaurtz时的singlton问题
2008-11-23 17:24 1557上一篇中用TimerTask做了个简单的实验, ... -
试下Spring的scheduledTask: 不应该出问题的问题
2008-11-21 20:39 3092要用Spring的scheduledTask了 ... -
在Java里不用Socket而直接操作远程计算机里的文件.
2008-06-25 18:27 2798今天上班时偶然发现在Java里可以在不用Socket情况下操作 ... -
about @SuppressWarnings.
2008-06-24 13:50 7668about @SuppressWarnings. ... -
<Java.JavaEE面试整理>(10) --"标签"接口,重载vs覆盖........
2008-04-04 15:46 2174Q 13: Java中为什么有些接口里并没有定义任何方法? L ... -
java.sql.Timestamp转为相应字符串的问题及解答
2008-04-01 14:28 2894工作中用到了java.sql.Timestamp这个类,先不说 ...
相关推荐
本文将深入探讨“Checked”和“Unchecked”异常的区别,以及它们在实际编程中的应用。 Checked异常,也称为编译时异常,是那些在编译阶段必须被处理的异常。如果一个方法可能会抛出Checked异常,那么该方法要么通过...
Java中的checked异常和unchecked异常区别详解 Java中的checked异常和unchecked异常是Java语言中两种不同的异常类型,它们之间的区别是很多开发者容易混淆的。下面,我们将详细介绍checked异常和unchecked异常的概念...
checked 和 unchecked关键字用来限定检查或者不检查数学运算溢出的;如果使用了checked发生数学运算溢出时会抛出OverflowException;如果使用了unchecked则不会检查溢出,算错了也不会报错。1. 一段编译没通过的代码...
在C#编程语言中,`checked`和`unchecked`关键字是用来控制整数算术运算和类型转换时是否进行溢出检查的重要工具。了解这两个关键字的用法和含义对于编写安全的代码至关重要,尤其是在处理可能涉及大数值计算或者类型...
在C#编程语言中,`checked`和`unchecked`关键字是用来控制整数算术运算时是否检查溢出的。这两个关键字对于理解C#中的数值计算行为至关重要,特别是当你处理可能会导致数值溢出的操作时。溢出发生在尝试将一个超出其...
通过实例了解 Java checked 和 unchecked 异常 Java 异常分为两种类型:checked 异常和 unchecked 异常。checked 异常是可以在执行过程中恢复的,例如无效的用户输入、文件不存在、网络或者数据库链接错误等。这些...
Java异常分为两种类型,checked异常和unchecked异常,另一种叫法是异常和错误。 简单地讲,checked是可以在执行过程中恢复的,而unchecked异常则是无法处理的错误。 checked异常: 表示无效,不是程序中...
Java 中 Checked Exception 与 Runtime Exception 的区别 Java 中的异常处理机制是 Java 语言的一个重要特色,它允许程序产生例外状况。在学习 Java 时,我们需要了解不同种类的异常的区别。Java 提供了两种异常...
在jQuery中,获取复选框(checkbox)的`checked`状态是一个常见的操作,但往往存在一些误解。在讨论这个问题之前,我们先明确HTML中的`checked`属性和jQuery中获取该属性值的区别。 在HTML中,当一个复选框被选中时...
Checked与Unchecked 对于因为整数类型参与算术操作和类型转换时产生的“溢出异常”——System.OverflowException,在某些算法来讲不算真正的“异常”,相反这种溢出常常为程序所用。C#通过引入checked和unchecked...
Checked Exception 和 Unchecked Exception 有什么区别? Throwable 类常用方法有哪些? try-catch-finally 如何使用? finally 中的代码一定会执行吗? 如何使用 try-with-resources 代替try-catch-finally? I/O ...
《深入理解Windows XP 64位Checked Debug版》 Windows XP是微软公司推出的一款经典操作系统,而其64位Checked Debug版本则是为了开发者和系统管理员专门设计的,它包含了大量的调试工具和信息,有助于深入理解和...
"Checked Unitree" 是一个与Delphi编程语言相关的组件或库,主要用于开发应用程序时构建和管理树形数据结构。在Delphi中,开发者经常使用这样的组件来展示层次化的信息,如文件系统、数据库结构或者组织架构等。这个...
Qt::Unchecked : Qt::Checked); } else { // 如果点击的是其他列,也切换复选框状态 for (int i = 0; i < item->columnCount(); ++i) item->setCheckState(i, item->checkState(i) == Qt::Checked ? Qt::...
vista checked debug 64位版本,如果要debug版本的符号文件,请到MSDN上下载。希望这个对你有帮助。