これは、構文/構造化の問題です。私は JDBC: Statement
andを使用しています。これは、どこにでもスローされていることResultSet
を意味します。SQLExceptions
私のコードは次のようになります。
private static final String MY_QUERY = "SELECT * FROM MY_TABLE";
public void lookAtMetadata() throws SQLException {
try (Statement myStatement = getStatement)
{
try (ResultSet myResultSet = myStatement.executeQuery(MY_QUERY))
{
ResultSetMetadata metadata = myResultSet.getMetaData();
// do other stuff with metadata
}
}
}
ここまでは順調ですね。myStatement.executeQuery(MY_QUERY)
しかし、次のように、失敗したときに特別な例外をスローしたいと考えています。
ResultSet myResultSet = null;
try
{
myResultSet = myStatement.executeQuery(MY_QUERY);
// get metadata and do stuff
} catch (SQLException e)
{
throw new MySpecialException(e);
} finally
{
if (myResultSet != null) myResultSet.close();
}
問題は、関連する他の操作ResultSetMetaData
も をスローする可能性がありSQLException
、それらを でラップしたくないことですMySpecialException
。
SQLException
クエリの実行から来るものだけをキャッチし、他のSQLExceptions
ものをメソッドの呼び出し元にスローする方法はありますか? 私もきちんと閉めたいと思いますResultSet
。