4

私と私のチームはPlayに比較的慣れていません!フレームワーク(1.2.5)では、コントローラーでこれに似たコードをかなりの量作成しました。

public static void list() {
  try {
    List<ActionModel> actions = ActionModel.loadActions();
    render( actions );
  } catch ( Exception ex ) {
    error();
  }
}

例外は、通常のPlay Frameworkモデルとは対照的に、カスタムコードが含まれているモデルレイヤーから発生します。私の質問は、try catchをスキップして、コントローラーメソッドから例外をスローすることはできますか?そして、それは実際にこれに対処するためのより正しい方法ですか?

4

1 に答える 1

5

PlayFramework はほぼ同じことを行うため、コードは実際には何もしません。つまり、キャプチャされていない例外をキャッチし、error() を呼び出して 500 内部エラーを出力します。

私のプロジェクトでは、予期しないエラー、つまり開発者に電子メールを送信して例外を報告します。基本的には次のようなコードです。

public class ErrorHelper extends Controller{
    @Catch(Exception.class) 
    public static void handleException(final Exception e) {
        String errorCode = ErrorHelper.generateErrorCode();
        renderArgs.put("errorCode", errorCode);
        new Job() {
            @Override
            public void doJob() throws Exception {
                Mail.reportError(errorCode, e);
            }
        }.now();
    }
}

そして、コントローラーで@With(ErrorHelper.class).

また、エラー コードをエンド ユーザーに表示してファイルをカスタマイズ500.htmlし、それを使用してテクニカル サポートに電話するように依頼することもできます。

于 2013-01-23T11:38:07.893 に答える