Interface ExceptionAware


public interface ExceptionAware

Commandの処理で発生した例外をハンドリングするためのインタフェース。 Command.execute(RequestContext)内で例外処理することもできるが、 Intercepter内で発生した例外も含めて捕捉したい場合は、Commandの実装クラスにて、 当該interfaceも合わせて実装するようにする。

実装例
 public class ExpHandleCmd implements Command, ExceptionAware {
   
   //Commandの処理本体
   public String execute(RequestContext request) {
     :
     :
     throw new IllegalArgumentException("erorr");
   }
   
   //例外処理の実装メソッド
   public String handleException(RuntimeException exception, RequestContext request) throws RuntimeException {
     if (exception instanceof IllegalArgumentException) {
       //例外処理を記述
       :
       :
     }
     
     //Commandの処理結果としてステータスコードを返す、もしくは例外を再スロー
     return "ERROR";
   }
 }
 
  • Method Summary

    Modifier and Type
    Method
    Description
    Command.execute(RequestContext)内、もしくはCommandInterceptor内で例外が発生した場合、 当メソッドが呼び出される。 返り値として、Commandのステータスを返却するか、例外を再スローするようにする。
  • Method Details

    • handleException

      String handleException(RuntimeException exception, RequestContext request) throws RuntimeException
      Command.execute(RequestContext)内、もしくはCommandInterceptor内で例外が発生した場合、 当メソッドが呼び出される。 返り値として、Commandのステータスを返却するか、例外を再スローするようにする。
      Parameters:
      exception - 発生した例外
      request - RequestContextのインスタンス
      Returns:
      Commandステータス。例外処理後、正常の結果を返したい場合に返却する
      Throws:
      RuntimeException - 例外処理後、framework側に例外を通知したい場合はスローする