1

如何捕获特定异常?例如,在 Java EE 项目SQLException中可能会出现。为了捕捉目的,我们写

catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }   

但这可能由于不同的原因而发生,例如

ORA-00001: 违反唯一约束 (SYSTEM.PK_USERID)

或者

侦听器拒绝连接并出现以下错误:ORA-12505,TNS:listener 目前不知道连接描述符中给出的 SID 客户端使用的连接描述符是:localhost:1521:XE。

因此,如果我想具体捕获正在发生的异常,我该如何在代码中实现它?代码片段将非常有帮助!

4

4 回答 4

2

如果您在谈论java.sql.SQLException,请检查它的Javadoc,因为您可以单独捕获该异常的大量子类(以及这些子类的子类)。另外,如果您使用任何框架,它们有可能提供更多SQLException自己的子类。您可以在 IDE 中轻松检查这一点。在 Eclipse 中,它被称为Type Hierarchy视图。

于 2012-08-01T17:14:01.227 回答
1

看起来您希望根据结果以不同方式响应异常e.getMessage()。为此,我建议在 catch 块中使用一系列 if 语句;你几乎肯定想要捕获异常(因为未捕获的异常很麻烦),所以除了它是异常的事实之外,你不需要决定是否捕获。

编辑:如果是您自己的方法抛出某些异常,您可以将 SQLException 子类化以表示原始类的不同变体,并单独捕获这些变体。

于 2012-08-01T17:11:12.187 回答
1

抓住,检查那是否是消息,如果不是,则重新抛出。

于 2012-08-01T17:11:42.930 回答
0

您给出的是各种消息SQLException. 如果您必须以不同方式处理它们,您可能必须使用 if 语句或 switch 语句e.getMessage()

于 2012-08-01T17:13:25.490 回答