Exception 和 SQLException 的区别

jav*_*eek 6 java sql exception-handling exception sqlexception

有人能解释一下 catch anException和 catch an之间的区别SQLException吗?我知道如果您选择打印出异常错误,SQLException 会打印出更多信息,但是还有其他什么吗?

try {
   //code
} catch(Exception ex) {
   //code
}
Run Code Online (Sandbox Code Playgroud)

try {
   //code
} catch(SQLException ex) {
   //code
}
Run Code Online (Sandbox Code Playgroud)

在 catch 块中使用Exception和有什么好处和区别SQLException

fge*_*fge 4

这不是唯一的区别。

捕获Exception是危险的,因为它还捕获所有RuntimeExceptions (因此是未经检查的异常),并且包括诸如此类的细节NullPointerException,这些都是明显的程序员错误。不要那样做

另外,Exception它是一个与其他类一样的类,因此您可以对其进行子类化并添加您自己的构造函数/方法。例如,SQLException有一个没有的.getErrorCode()方法Exception。如果你只捕获Exception,则无法访问此方法。

一般来说,首先捕获“更精确”的异常是最好的。例如,使用新的(Java 7...)文件 API,您可以轻松区分文件系统级别错误和其他 I/O 错误,因为FileSystemExceptionextends IOException

try {
    something();
} catch (FileSystemException e) {
    // fs level error
} catch (IOException e) {
    // I/O error
}
Run Code Online (Sandbox Code Playgroud)