java - 异常和 SQLException 之间的区别

标签 java sql exception exception-handling sqlexception

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

try {
   //code
} catch(Exception ex) {
   //code
}

try {
   //code
} catch(SQLException ex) {
   //code
}

在catch block 中使用ExceptionSQLException有什么好处和区别?

最佳答案

这不是唯一的区别。

捕获 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/

相关文章:

java - 如何让 im4java 与 BufferedImage 一起工作

java - Playframework 非静态方法 <T>form(java.lang.Class<T>) 无法从静态上下文引用 Form 错误

php - 将 Wilson Score Confidence SQL 代码转换为 Codeigniter 事件记录

mysql - 如何通过MYSQL查询计算一列中与另一列中的每个唯一元素相对应的NULL?

c# - 无法执行 URL - 有什么想法吗?

java - 在java中将字符串声明和初始化为静态时出错

c# - 当表中有多个唯一键列时,如何查找哪一列引发唯一键约束异常?

java - 多线程——奇偶序列

java - 如何在netBeans的现有项目中使用Aspose.Cells?

mySQL LIKE 管道上的查询