在java中从catch/finally返回值?

use*_*403 2 java exception jdbc

我有以下代码.如果执行查询而没有异常,则应返回true,如果抛出任何异常,则应返回false.最后声明和连接应该关闭.我的问题是我应该在哪里写回复陈述?在赶上还是最后?在下面的代码中,如果执行查询,我在try中返回true,如果抛出任何异常,则在catch中返回false.我的问题是,如果抛出任何异常,返回false并关闭连接和语句发生?

try {
            statement = connection.createStatement();
            statement.executeQuery("select * from dual");
            return true;
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
                   return false;
        } finally{
                try {

                        statement.close();

                        connection.close();

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

                }

        }
Run Code Online (Sandbox Code Playgroud)

Mar*_*nik 8

两者都没有,将它写在try-catch块之外,在它下面.永远不要在最终中返回,因为返回语句将始终执行,践踏try块中的常规return语句!


NPE*_*NPE 5

我应该在哪里写return语句?

在决赛结束后把它放在最后}:

    try {
        ...
        return true;
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        ...
    }
    return false; // <===== HERE
Run Code Online (Sandbox Code Playgroud)

这样,true当且仅当try块中的代码执行而不抛出异常时,函数才会返回.在所有其他情况下,函数将返回false.