有人能解释一下捕获Exception
和捕获SQLException
之间的区别吗?我知道如果你选择打印出异常错误,SQLException 会打印出更多的信息,但是还有其他的吗?
try {
//code
} catch(Exception ex) {
//code
}
和
try {
//code
} catch(SQLException ex) {
//code
}
在catch block 中使用Exception
和SQLException
有什么好处和区别?
最佳答案
这不是唯一的区别。
捕获 Exception
是危险的,因为它也会捕获所有 RuntimeException
s(因此是未经检查的异常),并且包括诸如 NullPointerException
等细节,这些都是明显的程序员错误。 不要那样做!
此外,Exception
是一个与其他任何类一样的类,因此您可以将其子类化并添加您的构造函数/方法。例如,SQLException
有一个 .getErrorCode()
method Exception
没有。如果您只捕获 Exception
,则无法访问此方法。
一般来说,先捕获“更精确”的异常是最好的。例如,使用新的(在 Java 7 中...)文件 API,您可以轻松区分文件系统级错误和其他 I/O 错误,因为 FileSystemException
扩展了 IOException
:
try {
something();
} catch (FileSystemException e) {
// fs level error
} catch (IOException e) {
// I/O error
}
关于java - 异常和 SQLException 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22944978/