BlazeDS を介して Java バックエンドと通信する Flex アプリケーションがあります。
以前は、SQL エラーが発生した場合、SQL 例外が Flex アプリケーションでアラートとして表示され、CallResponder の障害ハンドラーが呼び出されて、何か問題が発生したことがユーザーに通知されていました。
Flex コード: Call Responder:
<s:CallResponder id="loginResult" result="loginResult_resultHandler(event)" fault="displayGenericErrorMessage(event)"/>
サービスへの呼び出し:
var authenticationMessage:String = loginResult.lastResult as String;
古い Java コード:
Map resultSet = simpleJdbcCall.execute();
ArrayList list = (ArrayList) resultSet.get("RESULT_SET");
上記のコードからわかるように、SQL 実行ステートメントは try-catch ブロック内にありません (コーディング エラー)。これは実際にはそれほど問題にはなりませんが、例外をエラー ログに出力できるようにしたかったので、execute ステートメントを try-catch ブロック内に配置することは正しいことです。したがって、コードは次のようになりました。
新しい Java コード:
ArrayList list = new ArrayList();
try {
Map resultSet = simpleJdbcCall.execute();
list = (ArrayList) resultSet.get("RESULT_SET");
}
catch (Exception e) {
logger.error(e.getMessage());
}
以前は (try-catch ブロックなしで)、例外が発生した場合、例外のメッセージが Flex に戻され、アラートとして表示され、CallResponder の障害ハンドラーが呼び出されていました。必ずしも例外をアラートとして表示する必要はありませんでしたが、何か問題が発生したことをユーザーに通知するため、フォールト ハンドラーを呼び出すことは適切でした。
(try-catch ブロックを使用して) 例外が発生した場合、必要に応じて例外がログに出力されますが、CallResponder の障害ハンドラーは呼び出されません。Flex は、サービスがnull
正しくない値で正常に返されたと考えています。
呼び出しが成功しなかったこと、および try-catch ブロックを削除する以外に障害ハンドラーを呼び出す必要があることを Flex に示す他の方法はありますか?
前もって感謝します。