Apcoordinator ユーザーズガイド |
目次 |
第2部 Apcoordinatorコアの機能 | > 第4章 APIを使ったプログラミング |
Apcoordinatorでは、Postprocessorインタフェースを使って、あまり発生しないような例外をまとめて処理することができます。 ビジネスクラス、セションクラス、アプリケーションクラスでPostprocessorインタフェースを実装すると、処理中に例外が発生した場合にhandleExceptionメソッドが呼ばれます。 その例外に対応可能ならば対応して正常終了、対応不可能ならば再度その例外をスローします。 handleExceptionメソッドは、ビジネスクラスの外で発生した例外も受け取る可能性があります。そのため、例外に対応可能かどうか判定し、対応不可能な例外は再度スローする必要があります。
public void startup(DispatchContext context) { dm = new DataManager(); try { dm.prepareData(); } catch(DataManagerException e) { // 例外に応じた画面を表示するためのsetResponseBean .... } catch(IOException e) { // 例外に応じた画面を表示するためのsetResponseBean .... } .... }
例外は発生時の形のままではなく、NestedExceptionに変換されて通知されることがあります。 NestedException形式の例外はgetRootCauseメソッドにより、原因の例外を知ることができます。
public class SampleHandler extends com.fujitsu.uji.GenericHandler implements com.fujitsu.uji.Postprocessor { public Object handleException(DispatchContext context, Throwable th) { if(th instanceof MyException) { // 例外に応じた画面を表示するsetResponseBean .... } else { // 不明な例外 throw th; } return null; // ダウンロードサーブレットを使用する場合に必要 } }
import com.fujitsu.uji.log.NestedException; .... public Object handleException(DispatchContext context, Throwable th) { while(th instanceof NestedException) { th = ((NestedException)th).getRootCause(); } // thは原因の例外 .... } ....
目次 |