Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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 我们是否需要在catch块中抛出与使用throws声明的方法签名中已经提到的相同的异常_Java_Exception_Throw_Throws - Fatal编程技术网

Java 我们是否需要在catch块中抛出与使用throws声明的方法签名中已经提到的相同的异常

Java 我们是否需要在catch块中抛出与使用throws声明的方法签名中已经提到的相同的异常,java,exception,throw,throws,Java,Exception,Throw,Throws,我的Java应用程序中有一个抛出SQLException的方法。是否需要在catch块中抛出SQLException,以便将异常抛出到处理异常的调用方法 public void insert(Connection conn) throws SQLException { try { // my code } catch (SQLException s) { throw s; } } 如果您希望自己处理异常,然后将其传递给调用方法,那么是的,

我的Java应用程序中有一个抛出
SQLException
的方法。是否需要在catch块中抛出
SQLException
,以便将异常抛出到处理异常的调用方法

public void insert(Connection conn) throws SQLException
{
    try {
        // my code
    } catch (SQLException s) {
        throw s;
    }
}

如果您希望自己处理异常,然后将其传递给调用方法,那么是的,您需要重新抛出它:

public void insert(Connection conn) throws SQLException {
    try {
        // Your code.
    } catch (SQLException s) {
        // Handle s.
        throw s;
    }
}
如果不需要对异常执行任何操作,只想将其传递给调用方法,则可以省略
try
-
catch
,如果抛出异常,调用方法将接收它:

public void insert(Connection conn) throws SQLException {
    // Your code.
}

如果您希望自己处理异常,然后将其传递给调用方法,那么是的,您需要重新抛出它:

public void insert(Connection conn) throws SQLException {
    try {
        // Your code.
    } catch (SQLException s) {
        // Handle s.
        throw s;
    }
}
如果不需要对异常执行任何操作,只想将其传递给调用方法,则可以省略
try
-
catch
,如果抛出异常,调用方法将接收它:

public void insert(Connection conn) throws SQLException {
    // Your code.
}

发生此错误是因为您将代码放在“try catch”块中,如果发生任何异常,catch块句柄将与其一起处理。不发送到调用方法

您可以使用下面的函数向调用方法抛出异常

public void insert(Connection conn) throws SQLException {
    //code.
}

发生此错误是因为您将代码放在“try catch”块中,如果发生任何异常,catch块句柄将与其一起处理。不发送到调用方法

您可以使用下面的函数向调用方法抛出异常

public void insert(Connection conn) throws SQLException {
    //code.
}

如果在方法的throws子句中声明异常,则可以:
1) 抛出声明类型的异常。
2) 引发声明类型的子类型异常。
3) 接受例外。(不推荐,因为您已在签名中声明)
4) 引发任何其他运行时异常。


现在来看您的示例,最好重新抛出异常,以便调用方方法知道发生了错误并采取适当的操作(例如,如果连接对象上正在运行事务,则回滚该事务)。

如果在方法的throws子句中声明异常,则可以:
1) 抛出声明类型的异常。
2) 引发声明类型的子类型异常。
3) 接受例外。(不推荐,因为您已在签名中声明)
4) 引发任何其他运行时异常。


现在来看您的示例,最好重新抛出异常,以便调用方方法知道发生了错误并采取适当的操作(例如,如果连接对象上正在运行事务,则回滚该事务)。

如果是这样,您就无法捕获它,正如在
throws
中已经提到的那样,如果是这样,您就无法捕获它,正如在
throws
中已经提到的那样,我正在调用方法中处理异常。所以在catch块中,我需要重新抛出异常,对吗?只有当您希望调用方法也处理它时。如果没有,则不需要重新抛出它,也可能不需要
抛出SQLException
。我在调用方法中处理异常。所以在catch块中,我需要重新抛出异常,对吗?只有当您希望调用方法也处理它时。如果没有,则不需要重新抛出它,也可能不需要
抛出SQLException