skillup

技術ブログ

アーキテクト設計全般

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

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

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

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

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

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

でしょうか。

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

どんな例外をなげるか

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

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

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

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

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

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

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

代表的な手法としては

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

などでしょうか。

後続処理

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

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

 

 

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

執筆者:


comment

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

関連記事

no image

HTTPリクエストの分類について(POST、PUT、PATCT)

HTTPリクエストの分類(主に更新系のもの)について。 Contents1 POST2 PUT3 PATCH POST 更新系の代表的なHTTPリクエストですね。 通常はデータの取得=GET、更新=P …

no image

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

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

no image

マイクロサービスについて

マイクロサービスについて勉強したので少しメモを。 参考文献 Software Design 「2020年1月」 Contents1 マイクロサービスとは?1.1 具体例1.1.1 フロントエンドとバッ …

no image

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

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

no image

オブジェクト指向設計 ダックタイピング

オブジェクト指向シリーズ。ダックタイピング・・読む前は名前は聞いたことあるような気がする・・程度で細かいことは何一つわからない状態でした。今回具体的なコード例があった分イメージを何とかつかむことはでき …

アーカイブ