このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン | 次のリビジョン 両方とも次のリビジョン | ||
apricot:usage:ja:controller [2020/08/26 21:11] y2sunlight [トランザクション] |
apricot:usage:ja:controller [2020/08/26 21:23] y2sunlight [トランザクション処理] |
||
---|---|---|---|
行 421: | 行 421: | ||
アクションがしなければならないことは、モデルの例外を捕捉して、ApplicationException をスローすることだけです。フレームワークは ApplicationException またはそれを親に持つ例外のみを捕捉します。それ以外の例外は、集約エラーハンドラーによって補足されシステムエラーになります。即ち、フレームワークは、ApplicationException のみ前画面に戻すリダイレクトレスポンスを生成します。 | アクションがしなければならないことは、モデルの例外を捕捉して、ApplicationException をスローすることだけです。フレームワークは ApplicationException またはそれを親に持つ例外のみを捕捉します。それ以外の例外は、集約エラーハンドラーによって補足されシステムエラーになります。即ち、フレームワークは、ApplicationException のみ前画面に戻すリダイレクトレスポンスを生成します。 | ||
+ | |||
+ | モデルは次の場合に ApplicationException をスローします: | ||
+ | |||
+ | * 楽観的ロック例外が発生した場合( '' | ||
+ | * 対象レコードが存在しない場合(レコード更新時および削除時) | ||
+ | |||
+ | アクションでは、これ以外の例外が発生した場合は、パースエラーなどの '' | ||
+ | |||
+ | === クエリーの例外処理 === | ||
+ | |||
+ | 通常、トランザクションは更新系の処理で設定するするので、クエリーで発生した全ての例外は集約エラーハンドラで処理されエラー画面が表示されます。この状況を避けたい場合は、次の何れかの選択になるでしょう。 | ||
+ | |||
+ | * クエリーのアクションにもトランザクションを設定する | ||
+ | * アクション内のcatchブロックでエラーメッセージ付きの入力ページをレンダリングする | ||
\\ | \\ | ||