自定义异常类不会捕获异常

ViS*_*ViS 5 java exception-handling exception

我有一个自定义异常类,它扩展了Exception类(如下所示).

public class SomeABCException extends Exception
Run Code Online (Sandbox Code Playgroud)

但是,当我SomeABCException在之前Exception在catch块中使用的所有位置使用它时,即使在扩展Exception类本身之后它也不会捕获异常.

例如,如果父/调用方法具有如下的catch块

catch (Exception e) {
    TODO something;
}
Run Code Online (Sandbox Code Playgroud)

如果我有一个子方法,我正在运行一些数据库查询.

try {
    Some database queries;
} catch (SomeABCException e) {
    throw new SomeABCException (e.getMessage(),"I/O or SQL_EXCEPTION");
}
Run Code Online (Sandbox Code Playgroud)

这里如果sql连接失败,catch就无法捕获异常,而是被父/调用者catch块捕获,该块使用System.Exception来捕获它.

在调试期间,它不会转到child方法的catch块中.

请解释一下,我不明白.

Jam*_*zba 1

我相信你的想法是倒退的。的实例Exception只会捕获子类或其实例的异常。因此,由于Exception是 的超类SomeABCException因此SQLException不会被捕获。