如何捕获特定的异常?例如,在Java EE项目中可能会出现SQLException
。为了达到目的,我们写了
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
但是可能由于不同的原因而发生,例如
ORA-00001:违反了唯一约束(SYSTEM.PK_USERID)
或
侦听器拒绝连接时出现以下错误: ORA-12505,TNS:监听器当前不知道连接描述符中给出的SID 客户端使用的连接描述符是: localhost:1521:XE。
因此,如果我想具体捕获哪个异常发生,我该如何在代码中实现它?代码片段非常有用!!
答案 0 :(得分:2)
如果您正在讨论java.sql.SQLException
,请检查其Javadoc,因为您可以单独捕获该异常的大量子类(以及那些子类的子类,以及)。另外,如果您使用任何框架,他们有可能提供更多自己的SQLException
子类。您可以在IDE中轻松检查。在Eclipse中,它被称为类型层次结构视图。
答案 1 :(得分:1)
您似乎希望以不同的方式响应异常,具体取决于e.getMessage()
的结果。为此,我会建议catch块中的一系列if语句;你几乎肯定想要捕获异常(因为未捕获的异常是麻烦的),所以你不需要根据它是一个异常的事实来决定是否捕获它。
编辑:如果你自己的方法抛出某些异常,你可以继承SQLException来表示原始类的不同变体,并单独捕获它们。
答案 2 :(得分:1)
catch,检查是否是消息,如果没有则重新抛出。
答案 3 :(得分:0)
您所提供的是SQLException.
的各种讯息
如果必须以不同方式处理它们,则可能必须使用if语句
或切换e.getMessage()