【发布时间】:2015-09-02 20:34:24
【问题描述】:
我有一个自定义异常类,它扩展了异常类(如下所示)。
public class SomeABCException extends Exception
但是,当我在之前在 catch 块中使用 Exception 的所有地方使用此 SomeABCException 时,即使它扩展了 Exception 类本身,它也不会捕获异常。
例如如果父/调用方方法具有如下的 catch 块
catch (Exception e) {
TODO something;
}
如果我有如下子方法,我正在其中运行一些数据库查询。
try {
Some database queries;
} catch (SomeABCException e) {
throw new SomeABCException (e.getMessage(),"I/O or SQL_EXCEPTION");
}
这里如果 sql 连接失败,catch 无法捕获异常,而是被父/调用者 catch 块捕获,该块使用 System.Exception 捕获它。
在调试期间,它不会在子方法的 catch 块中进行 throw。
请解释一下,我不明白。
【问题讨论】:
-
请去掉上面代码帖子中放错位置的
***,因为它们非常分散注意力。另请注意,如果代码块没有抛出您的异常,那么您的异常将不会被捕获。 -
其实如果 SomeABCException 是扩展 Exception 类,如果有 com.microsoft.sqlserver.jdbc.SQLServerException,那么应该被 SomeABCException catch 块捕获吧?
-
这是非常非常错误的。恐怕您误解了异常的工作原理。请阅读下面的许多答案,并查看有关异常的教程,因为我感觉几分钟后会亮起灯来,您会看到假设的错误。运气。
-
非常正确,现在明白了...感谢您的帮助。 :)
标签: java exception exception-handling