SQLException オブジェクトを反復処理し、各インデックスのエラー コードをフィルター処理しようとしています。
public static void showExceptionByErrorCodeRange(SQLException ex, int range_min, int range_max){
String msg = new String();
int error_code = 0;
Iterator<Throwable> itr = ex.iterator();
while(itr.hasNext()){
SQLException e = (SQLException)itr.next();
error_code = e.getErrorCode();
if(error_code >= range_min && error_code <= range_max){
msg += e.getMessage();
}
}
showErrorMsg(msg);
}
このコードはコンパイルされますが、while(itr.hasNext())が 1 回だけループし、e.getMessage()がこれを返すため、SQLException には 1 つのインデックスしかないように見えます。
ORA-20000: The vendor-specific error message i need to select by my function.\n
ORA-06512: at "any_table", line x\n #<-- default SQL error message.
ORA-06512: at line 1\n #<-- default SQL error message.
e.getErrorCode()を 20000 にすることはできますが、 e.getMessage( )をmsgに追加すると、すべてのエラーが同じ文字列に表示されます。(ORA-06512)
文字列ロジックを使用せずにgetMessage()文字列からエラー (ORA-20000 および ORA-06512) を分離する方法はありますか?
ありがとうございました。