【概要】
「この例外だったらここへ遷移する」
というようなグローバルなExceptionHandlingではなく
「この画面でこの例外だったらここへ遷移する」
という画面固有のExceptionHandlingがあると良い。
Pageクラスでtry-catchして遷移で事足りる場合は問題ないが、
「トランザクションをRollbackして遷移」したいことが多い。
Pageクラスでトランザクションを開始するアーキテクチャ特有の
問題ではあるが、「Pageクラスでトランザクションを開始する」事自体は
メリットがあるため、上記問題を解決するソリューションを追加する方が良い。
【解決案】
Teedaを使った実業務で用いられたやり方:
PageクラスのInterceptorの中で
初期化時にPageクラスのアノテーションから例外情報と遷移先を取得して、
実行時に発生した例外が一致するならその遷移先に飛ばす。
(Teedaにはこの機能がないのでアプリ独自で作っていた)
@ExceptionHandling(BizXxxException.class, BarPage.class) public class FooPage { }