Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何捕获特定的异常_Java_Oracle_Exception_Jakarta Ee_Exception Handling - Fatal编程技术网

Java 如何捕获特定的异常

Java 如何捕获特定的异常,java,oracle,exception,jakarta-ee,exception-handling,Java,Oracle,Exception,Jakarta Ee,Exception Handling,如何捕获特定的异常?例如,在JavaEE项目中,可能会发生异常。为了抓住目的,我们写作 catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } 但这可能是由于不同的原因造成的,比如 ORA-00001:违反了唯一约束(SYSTEM.PK_USERID) 或 侦听器拒绝连接,出现以下错误: ORA-12505,TNS:侦听器目前不知道连接描述

如何捕获特定的异常?例如,在JavaEE项目中,可能会发生异常。为了抓住目的,我们写作

catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }   
但这可能是由于不同的原因造成的,比如

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

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


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

您似乎希望根据
e.getMessage()
的结果对异常做出不同的响应。为此,我建议在catch块中使用一系列if语句;您几乎肯定希望捕获任何异常(因为未捕获的异常很麻烦),因此您不需要根据它是异常这一事实以外的任何其他因素来决定是否捕获


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

似乎您希望根据
e.getMessage()
的结果对异常做出不同的响应。为此,我建议在catch块中使用一系列if语句;您几乎肯定希望捕获任何异常(因为未捕获的异常很麻烦),因此您不需要根据它是异常这一事实以外的任何其他因素来决定是否捕获


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

捕获,检查这是否是消息,如果不是,则重试

catch,检查这是否是消息,如果不是,则重新播放

您给出的是
SQLException的各种消息。
如果必须以不同的方式处理它们,则可能必须使用If语句或If语句
e.getMessage()
的开关语句,您给出的是
SQLException的各种消息。
如果必须以不同的方式处理它们,则可能必须使用If语句或If语句
如果您谈论的是
java.sql.SQLException
,请检查它,因为您可以单独捕获该异常的大量子类(以及那些子类的子类)。另外,如果您使用的是任何框架,它们都有可能提供更多自己的
SQLException
子类。您可以在IDE中轻松地检查这一点。在Eclipse中,它被称为类型层次视图。

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

所以我修改了我的代码并尝试了捕获(SQLException sqle){String sqlMessage=sqle.getMessage();String sqlState=sqle.getSQLState();int vendorCode=sqle.getErrorCode();System.err.println(“发生异常”);System.err.println(“消息:”;System.err.println(“消息:”;System.err.println(“SQL状态:”+sqlState);System.err.println(“供应商代码:”+vendorCode);}根据[this]‌]​()。但它没有打印任何代码。因此我修改了代码并尝试了捕获(SQLException sqle){String sqlMessage=sqle.getMessage();String sqlState=sqle.getSQLState();int vendorCode=sqle.getErrorCode();System.err.println(“异常发生:”);System.err.println(“消息:”;System.err.println(“SQL状态:“+sqlState);System.err.println(“供应商代码:”+vendorCode);}根据[this]‌]​()。但它没有打印任何代码。