尝试但仍然有例外

时间:2013-12-26 21:31:18

标签: java exception

早上好。 我在“table”类中有一个方法“insert”。 在这个方法中,我接受类的成员,然后使用preparedStatement在db上编写它们。 如果事情出错,“插入”会抛出一个SQLException。 这是来源:

public void insert() throws SQLException
    {

    PreparedStatement sqlCommand = null;
    try
        {
        sqlCommand = this.db.prepareStatement(prepareInsertQuery());
        sqlCommand.execute();
        }
    finally
        {
        if (sqlCommand!=null)
            {
            sqlCommand.close();
            }
        }
    }

这是一个问题: 如果我放一个“catch SQLException”块,我必须处理INSIDE我的方法,我不想要它(我想在主程序中进行异常处理,用于记录)。 如果我没有输入“catch SQLException”,则会忽略该异常。

如何关闭sqlCommand但是如果我得到异常,那么传播它?

谢谢你!

2 个答案:

答案 0 :(得分:4)

您无需做任何其他事情。如果抛出异常,它已经传播到调用方法,因为你没有在这里捕获它。

答案 1 :(得分:0)

如果try的主体生成未捕获的异常,则不会忽略该异常;相反,该方法将以该异常终止(除非finally子句也生成异常,在这种情况下原始异常将丢失)。

如果您使用的是Java 7或更高版本,则应使用try-with-resources语法。这是可用的,因为PreparedStatement实现了AutoCloseable

public void insert() throws SQLException
{

    try (PreparedStatement sqlCommand = this.db.prepareStatement(prepareInsertQuery()))
    {
        sqlCommand.execute();
    }
}