126-java-exception-handling について
Java の例外処理を改善するスキルです。障害処理を見直す開発者向けに、リソース管理、エラー伝播、ログ記録を扱い、コンパイルと全体ビルドでの確認を求めます。
主な機能
- 01具体的な例外型と例外チェーン
- 02try-with-resources によるリソース解放
- 03安全なエラーメッセージと構造化ログ
- 04タイムアウトと上限付きリトライ
- 05非同期処理の失敗伝播
- 06コンパイルと全体ビルドの確認
活用シーン
- 01例外の分類と伝播のレビュー
- 02リソース解放とエラー情報の改善
- 03API エラー変換とログの強化
- 04タイムアウトや非同期失敗への対応
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jabrena/ plinth --skill 126-java-exception-handlingインストール後、Claude Code で/126-java-exception-handlingを入力して読み込まれたか確認します。
同梱ファイルreferences/126-java-exception-handling.md
詳細
Java 例外処理ガイドライン
堅牢な Java の例外処理プラクティスを特定して適用し、エラーの明確さ、セキュリティ、デバッグのしやすさ、システムの信頼性を向上させます。
このスキルで扱う内容
- 汎用的な
Exception/RuntimeExceptionではなく、具体的な例外型を使用する - リソースを自動的にクリーンアップする try-with-resources
- 情報漏えいを防ぐ、安全な例外メッセージ
- エラーのコンテキスト全体を保持する例外チェーン
IllegalArgumentException/NullPointerExceptionによる早期の入力検証InterruptedExceptionを処理し、中断状態を復元する@throwsJavaDoc のドキュメント化、フェイルファストの原則- 相関 ID を使った構造化ログと、ログ記録と再スローの重複回避
- 集約型例外マッパーによる API 境界での変換
- 冪等な操作に限った、バックオフ付きの上限のある再試行
- デッドラインの伝播によるタイムアウトの適用
- 二次的なクリーンアップ失敗に対する
Throwable#addSuppressed Throwable/Errorを捕捉しない- エラーメトリクスによる可観測性
- 非同期の
CompletionStageコードにおける失敗の伝播
対象範囲: リファレンスは、各主要領域について例(適切/不適切なコードパターン)をまとめています。該当する例に基づいて推奨事項を適用してください。
制約
例外処理の変更を適用する前に、プロジェクトがコンパイルできることを確認してください。コンパイルに失敗した場合は、直ちに中止し、解決するまで先に進まないでください。改善を適用した後は、完全な検証を実行してください。
- 必須:変更を適用する前に
./mvnw compileまたはmvn compileを実行する - 安全性:コンパイルに失敗した場合は直ちに中止し、プロジェクトが有効な状態になるまで先に進まない
- 検証:改善を適用した後に
./mvnw clean verifyまたはmvn clean verifyを実行する - 適用前:各例外処理パターンの詳細な適切/不適切な例、制約、安全対策について、リファレンスを読む
このスキルを使用する場面
- 例外処理
- Java コードで try-with-resources を使用する
- Java コードで例外チェーンを作成する
- Java コードにフェイルファスト検証を適用する
- Java の例外分類と伝播を確認する
ワークフロー
- 例外処理の変更前にプロジェクトをコンパイルする
./mvnw compile または mvn compile を実行し、コンパイルに失敗した場合は直ちに中止します。
- 例外処理のリファレンスを読む
references/126-java-exception-handling.md を読み、該当する障害処理と可観測性の改善点を特定します。
- 例外処理を改善する
具体的な例外、安全なリソース処理、エラー変換、一貫したログ記録パターンを採用するようリファクタリングします。
- 完全なビルドで検証する
改善を適用した後に ./mvnw clean verify または mvn clean verify を実行します。
リファレンス
詳細なガイダンス、例、制約については、references/126-java-exception-handling.md を参照してください。