0

これは、構文/構造化の問題です。私は JDBC: Statementandを使用しています。これは、どこにでもスローされていること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

4

1 に答える 1