- 浏览: 1241527 次
- 性别:
- 来自: 深圳
-
文章分类
- 全部博客 (718)
- HTML (13)
- JS基础 (23)
- JS应用 (40)
- AJAX (6)
- JSP相关 (12)
- JAVA基础 (52)
- JAVA应用 (74)
- APPLET (11)
- SWING\RCP (2)
- JAVA反射 (6)
- 设计模式 (26)
- 数据库设计 (20)
- Struts (35)
- Struts2 (12)
- Spring (22)
- Hibernate (45)
- Ibatis (18)
- mybatis (3)
- SSH (8)
- UML (5)
- WebService (3)
- XML (16)
- Log4j (7)
- WEB容器 (26)
- 数据结构 (36)
- Linux (34)
- Ruby on Rails (1)
- 其它技术 (27)
- IDE配置 (15)
- 项目实战 (2)
- Oracle (69)
- JAVA报表 (7)
- Android学习 (2)
- 博客链接 (1)
- 网络基础 (1)
- WEB集群 (1)
- .Net开发 (11)
- PB (4)
- 系统构建 (15)
最新评论
-
jnjeC:
牛逼啊哥们,讲得太好了
Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包 -
九尾狐的yi巴:
很好 感谢!
Itext中文处理(更新版) -
luweifeng1983:
有用的,重启一下嘛。
设置eclipse外部修改文件后自动刷新 -
Master-Gao:
设置了也不管用,怎么破呢?
设置eclipse外部修改文件后自动刷新 -
aigo_h:
锋子还有时间写博客,还是很闲哈!
Add directory entries问题
package com.lwf.thinking.eight; import java.sql.SQLException; public class UserDefineException { public static void main(String[] args) { try { catchException(); } catch (EusException e) { e.printStackTrace(); } } public static void catchException() throws EusException{ try { throwException(); } catch (SQLException e) { throw new EusException(); } } public static void throwException() throws SQLException{ System.out.println("throwException"); throw new SQLException(); } }
对应的自定义异常类为:
package com.lwf.thinking.eight; public class EusException extends Exception { public EusException(){ super(); } public EusException(String exception){ super(exception); } }
上述代码输出结果为:
throwException
com.lwf.thinking.eight.EusException
at com.lwf.thinking.eight.UserDefineException.catchException(UserDefineException.java:19)
at com.lwf.thinking.eight.UserDefineException.main(UserDefineException.java:9)
可以看到输出结果看不到最开始的throwException中抛出的SQLException,这是因为在catchException中抛出的是EusException而不是SQLException
那么当我抛出另一个异常的时候也想让这个异常包含引发它的异常怎么做呢?
修改异常类:增加方法
public EusException(Throwable cause){
super(cause);
}
对应异常类为:
package com.lwf.thinking.eight; public class EusException extends Exception { public EusException(){ super(); } public EusException(String exception){ super(exception); } public EusException(Throwable cause){ super(cause); } }
代码改为:
throw new EusException(e);
如下:
package com.lwf.thinking.eight; import java.sql.SQLException; public class UserDefineException { public static void main(String[] args) { try { catchException(); } catch (EusException e) { e.printStackTrace(); } } public static void catchException() throws EusException{ try { throwException(); } catch (SQLException e) { throw new EusException(e);//修改处 } } public static void throwException() throws SQLException{ System.out.println("throwException"); throw new SQLException(); } }
输出结果为:
throwException
com.lwf.thinking.eight.EusException: java.sql.SQLException
at com.lwf.thinking.eight.UserDefineException.catchException(UserDefineException.java:19)
at com.lwf.thinking.eight.UserDefineException.main(UserDefineException.java:9)
Caused by: java.sql.SQLException
at com.lwf.thinking.eight.UserDefineException.throwException(UserDefineException.java:25)
at com.lwf.thinking.eight.UserDefineException.catchException(UserDefineException.java:17)
... 1 more
可以看到结果列出了引发的原始异常SQLException。
注意,因为JAVA API中有很多类并没有参数为Throwable 类型的构造函数:
public EusException(Throwable cause){
super(cause);
}
但自Throwable类继承过来的类都有initCause(Throwable cause)方法,所以另一种实现的方式是:
异常类不变。
package com.lwf.thinking.eight; import java.sql.SQLException; public class UserDefineException { public static void main(String[] args) { try { catchException(); } catch (EusException e) { e.printStackTrace(); } } public static void catchException() throws EusException{ try { throwException(); } catch (SQLException e) { EusException eus = new EusException(); eus.initCause(e); throw eus; //另一种方法抛出包含原有异常信息 } } public static void throwException() throws SQLException{ System.out.println("throwException"); throw new SQLException(); } }
发表评论
-
JVM内存管理及性能调优(内存溢出、内存泄漏)
2015-09-02 07:14 701JAVA内存管理(内存溢出、内存泄漏)相关参考: JA ... -
JAVA可变参数对重载的影响
2014-01-27 15:28 941package com.lwf.test; publi ... -
有关String类创建几个对象的问题
2013-07-09 23:18 1342试题一: String s = new String(& ... -
JDK1.5下实现JDK1.6的Arrays.copyOfRange() 方法
2012-08-29 10:59 1770public static void test(){ i ... -
JAVA四舍五入的处理
2012-02-11 10:47 1025如下,保留两个小数位 double f = 3 ... -
Comparator实现排序
2011-11-16 01:23 1245转自:Comparator实现排序 在java.util包 ... -
JAVA定时器使用
2011-08-19 11:05 785http://hualong.iteye.com/blog/5 ... -
JDK5.0 Annotation学习笔记
2011-07-26 22:48 757http://linliangyi2007.iteye.com ... -
JAVA CP命令
2010-12-31 11:51 10307java -cp .;c:\dir1\lib.jar Test ... -
JDK1.5的新特性及应用
2010-07-13 12:49 1018以下两文: http://heaven-arch.iteye ... -
JAVA面试题150例
2010-05-19 11:44 2065一、Java基础方面 1、作用域public,priva ... -
《thinking in java》第四章:初始化与清理三
2010-05-19 00:21 790http://quicker.iteye.com/blog/5 ... -
JAVA编程思想第四版完整下载地址
2010-05-18 18:35 1270http://hi.baidu.com/yang1101190 ... -
JAVA多线程学习一
2010-04-13 17:21 937http://renyangok.iteye.com/blog ... -
JAVA常用误区整理
2008-01-09 13:12 9161、 float f=1.3;是不对的,编译时会出错,java ... -
try与finally块中return的问题
2008-12-05 14:37 1255针对以下情况进行测试: 情况1:try{} catch( ... -
简单克隆与深度克隆的思考
2008-12-19 16:44 1043白话简单克隆和深度克隆一文 http://blog.csd ... -
一道面试题引发的思考之:类的初始化
2008-12-29 16:23 723本人曾写过JAVA基础方面的blog,也是针对类的初始化的, ... -
JAVA基础学习篇----对象串行化及Transient关键字的使用
2009-01-08 18:07 0http://blog.csdn.net/scruffybea ... -
!JAVA学习提高之---- JAVA日期格式化及相关操作
2009-01-13 17:02 803http://blog.csdn.net/gubaohua/a ...
相关推荐
在 Java 中,捕获异常和抛出异常是两种不同的机制,分别用于处理不同的异常场景。 捕获异常(try-catch) 捕获异常是指在方法内部使用 try-catch 语句来捕获可能出现的异常。捕获异常的目的是为了避免异常的传播,...
另一方面,`throws`关键字用于方法声明,表示该方法可能会抛出异常,但不会在这里处理。这是将异常处理推迟到调用者的地方。例如: ```java public void readFile(String fileName) throws FileNotFoundException {...
在实际项目中,"异常规范"通常指一套约定,指导开发者如何有效地使用异常处理机制,包括何时抛出异常、何时捕获异常、如何命名异常类、如何编写异常处理代码等。遵循这些规范能够使代码更易读、更易于维护,也有助于...
异常处理通过`try-catch-finally`块来实现,其中`try`块包含可能抛出异常的代码,`catch`块捕获并处理异常,`finally`块则包含无论是否发生异常都需要执行的代码。 在`throw`语句中,我们可以指定一个异常对象来抛...
1. **try** 关键字:用于包围可能抛出异常的代码块。当try块中的代码抛出一个异常时,控制权会立即转移到与之匹配的catch块。 2. **catch** 关键字:用于捕获try块中抛出的异常。你可以有多个catch块来捕获不同类型...
这里,`try`块包含可能抛出异常的代码,`catch`块用于捕获特定类型的异常并进行处理,`finally`块则确保某些资源的释放或清理工作。 接下来,我们讨论“抛出异常”。在C#中,可以通过`throw`关键字来抛出一个异常。...
`throw`关键字在Java中被用来显式地抛出一个异常。当我们遇到一个预期之外的情况,或者某些条件不满足时,可以使用`throw`来中断当前的执行流程,并将控制权转移到能够处理这种情况的代码块。下面我们将详细讨论`...
这段描述进一步明确了代码示例的具体语言环境为Java,并强调这是一个简单的示例,旨在帮助读者理解如何在Java中实现异常抛出。Java作为一种广泛应用的面向对象编程语言,提供了丰富的异常处理机制,包括`throw`...
当一个`try`块中的代码抛出异常,相应的`catch`块将捕获该异常并执行相应的处理代码。在某些情况下,我们可能需要对不同类型的异常进行不同的处理,这就是`try-catch`嵌套的用武之地。 首先,让我们理解`try-catch`...
如果一个方法可能抛出异常但不处理,那么该方法必须声明它可能会抛出的异常,这样调用这个方法的代码就必须处理这些异常: ```java public void readFile(String filePath) throws IOException { File file = new ...
在SQL编程中,正确地抛出异常是调试和错误处理的关键环节。这使得开发者能够捕获并处理程序运行中的问题,特别是在复杂的存储过程和触发器中。本篇将详细讲解如何在SQL中抛出异常,以及它在报表开发中的应用。 SQL...
在Android开发中,全局未捕获异常处理是一个至关重要的环节,它确保了应用程序即使在遇到错误时也能优雅地处理,防止应用突然崩溃,提供良好的用户体验。"全局未捕获异常处理示例"这个主题深入讲解了如何在Android...
如果`toantitone`方法抛出异常,`main`方法中的`catch`块会捕获它,并通过`e.printStackTrace()`打印堆栈跟踪,帮助调试。`finally`块确保无论是否发生异常,都会执行一段代码(在这里是打印"over")。 `toantitone...
在大多数编程语言中,这会导致程序崩溃并抛出一个错误,如Python的`ZeroDivisionError`,Java的`ArithmeticException`,或C++的`std::invalid_argument`。 在处理这种异常时,程序员通常会采用异常处理机制来确保...
通过合理地使用try-catch-finally结构、自定义异常和正确声明抛出异常,我们可以有效地管理程序中的错误,确保应用程序能够优雅地处理各种异常情况。在处理数据库操作时,尤其是使用JDBC时,熟练掌握异常处理技巧更...
为了实现这个功能,开发者可能创建了一个自定义的切面,包含一个后置通知(after advice),这个通知会在方法抛出异常时执行。后置通知可以访问到抛出的异常,从而可以记录异常信息并将其存储到数据库。通常,这会...
在IT领域,程序异常关闭或抛出异常窗口是常见的问题,这可能由多种原因引起,如内存泄漏、代码错误、系统资源不足等。为了解决这类问题,我们需要采取一系列的故障排查和处理策略。 首先,我们需要理解“检测程序...
这里没有明确的`try-catch`结构,而是使用了`int.TryParse`方法,它不会抛出异常,而是返回一个布尔值表示转换是否成功。 2. **第二个示例**: 此示例使用了完整的`try-catch`结构。在`try`块中,尝试将字符串`sr`...
`Thread.UncaughtExceptionHandler`是Java线程处理未捕获异常的接口,当线程抛出一个未捕获的异常时,系统会调用该接口的`uncaughtException`方法。 以下是一个简单的全局异常捕获实现步骤: 1. 创建自定义的`...
如果子线程执行过程中发生异常,Future 对象将抛出异常。我们可以使用 try-catch 语句来捕获异常,并进行事务的回滚。 当子线程任务发生异常时,如何让主线程捕获到该异常并进行事务的回滚?答案是使用 Callable ...