【发布时间】:2014-03-12 10:03:32
【问题描述】:
假设我有以下几行代码,
Class.forName(JDBC_DRIVER);
dbConnection = DriverManager.getConnection(DB_URL, USER, PASS);
现在我想要的是,当捕获到 SQLException 时,我想从 SQLException 的 catch 字段中抛出我的自定义异常,我的意思是可以这样做还是有其他方法可以这样做?
我的自定义异常是 ErrorToDisplayException 为:
public class ErrorToDisplayException extends Exception{
public ErrorToDisplayException(Throwable e) {
}
}
我的代码如下:
try {
//Register JDBC driver
Class.forName(JDBC_DRIVER);
dbConnection = DriverManager.getConnection(DB_URL, USER, PASS);
}catch(final SQLException se){
// Handle errors for JDBC
throw new ErrorToDisplayException(se);
}
现在发生的情况是,当编译器到达 }catch(final SQLException se){ 它没有去它的捕捉体,只是挣脱了,不知道为什么?
【问题讨论】:
-
是的,我已经这样做了,但是发生的是当 SQLException 发生时(在 DEBUG 模式下),它会捕获异常并直接脱离代码而不是执行其捕获字段!,不知道为什么会这样!
-
这是一种奇怪的行为。你能用你观察到的代码的 sn-p 编辑你的原始帖子吗?也许是一些未经检查的异常从你的 catch() 中滑出
-
您能否也发布 JDBC_DRIVER 的值?你确定这个类在你的类路径中是可以访问的吗?
-
@Jorge_B JDBC_DRIVER = "com.mysql.jdbc.Driver" ,是的,我确定类路径没有问题!
-
那么我的最后一个想法是在代码末尾添加
catch(Throwable t) { t.printStackTrace(); }之类的内容,以便用尽所有可能引发检查异常的选项
标签: java jdbc exception-handling sqlexception throws