skillup

技術ブログ

アーキテクト設計全般

例外発生時で考えるべきポイント

投稿日:2023年7月29日 更新日:

いままでもいろいろ考えてきましたが、例外が発生した時のポイント(あるいはその周辺)について再度考えて見ようと思います。

トランザクションスコープ

どこからどこまでをトランザクションの1範囲とするか、議論になりやすい対象のポイントとしては、

  • 単一レコード
  • 複数レコード(一定のグループ)

でしょうか。

トランザクション自体はできるだけ小さくまとめたほうが、デッドロックのリスクがないので、なるべく小さいほうがよいでしょう。

どんな例外をなげるか

通常のExceptionとして処理をするのか、あるいはカスタマイズした例外としてなげるのか。

できればなるべく細かいExceptionを投げたほうが、検知や障害対応がしやすいのでいいでしょう。

カスタマイズ例としては500エラー以外にはいかのようなものがあげられるとおもいます。

UnauthorizeException・・なんらかの権限がない403系のエラー

ValidException・・入力値などの検証が不完全なバリデーション系のエラー

例外を発生させたあとの検知

例外を出した後の処理ですが、なんらかのほうほうで検知、記録しておく必要性があると思います。

代表的な手法としては

  • メールで連絡する
  • エラーレポーティングサービス(例:Sentry)
  • Slackなどのコミュニケーションツールに投稿する
  • 独自にLogに記録する

などでしょうか。

後続処理

その場で処理をストップさせるかあるいは、エラーの記録だけをのこしてつづけるか。

一般的にはその場でストップさせることが多いかと思いますが、データを取り込んで1行ずつ実行していくような大量処理系のバッチ処理の場合、logに記録をのこして後続処理を継続する・・・などのパターンもあります。

 

 

-アーキテクト設計全般
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

オブジェクト指向設計 柔軟なインターフェイス

オブジェクト指向シリーズ。今回はインターフェイスについて。 インターフェイスといっても、implementsを使った実装だけではなく、要はあるクラスが外部の窓口となるときに使うメソッドってことだと思う …

no image

オブジェクト指向 アプリケーション層に関して

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日は主にアプリケーション層(以下AP層)。MVCモデルでいうところのコントローラーに近い?)の考え方について。 Contents1 …

no image

自動テストをやる上で今まで障害だったこと

自動テストについて、考え方自体は5年以上前から知っていましたが、プロジェクトで実際に使われているのを見たのは今年4月になってからでした・・・ 自動テスト完備なんて昔は夢物語だと思ってたんですけどね・・ …

no image

キャッシュの使い所とメリデメに関して(主に一覧系の処理に関して)

現在のプロジェクトがかなりの規模のECサイトになるため、正確性とパフォーマンスのトレードオフなどが先日議題にあがりました。 完全なトレードオフではないのかもしれませんが、比較的あちらをたてればこちらが …

no image

アプリケーション間のデータの連携方法に関して

以前やった「現場で役立つシステム設計の原則」を再読してます。 今、読んでいるのはアプリ間のデータ連携に関して。 複数のアプリ間でデータをやり取りする場合、以下のような方法が考えられます。 ファイルを直 …

アーカイブ