143-java-functional-exception-handling について
Java の例外に依存した制御フローを関数型エラー処理へ置き換えるためのスキルです。Optional、VAVR Either、CompletableFuture などを使い、変更前の検証からリファクタリング、ビルド確認までを案内します。
主な機能
- 01Optional による null 許容値の表現
- 02VAVR Either による業務エラーの表現
- 03CompletableFuture による非同期エラー処理
- 04構造化ログとエラー型の設計
- 05変更前の検証と変更後のビルド確認
活用シーン
- 01例外に依存する Java の処理フローのリファクタリング
- 02Result または Either による業務エラーの表現
- 03検査例外と非検査例外の扱いの確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jabrena/ plinth --skill 143-java-functional-exception-handlingインストール後、Claude Code で/143-java-functional-exception-handlingを入力して読み込まれたか確認します。
同梱ファイルreferences/143-java-functional-exception-handling.md
詳細
Java の関数型例外処理のベストプラクティス
例外の過剰な使用を避け、モナド型のエラー型を活用することで、エラーの明確さ、保守性、パフォーマンスを向上させる Java の関数型例外処理のベストプラクティスを特定し、適用します。
このスキルで扱う内容
Optional<T>を使用して、NullPointerExceptionやNotFoundExceptionをスローする代わりに null 許容値を扱う- VAVR の
Either<L,R>を使用して、予測可能なビジネスロジックの失敗を扱う CompletableFuture<T>を使用して、非同期エラーを処理する- 網羅的なパターンマッチングを可能にする、豊富なエラー型階層をシールドクラスとレコードで定義する
- 単純な失敗ケースには列挙型ベースのエラー型を使用する
- 関数型合成:失敗する可能性のある処理を連鎖させる
flatMap/map/peek/peekLeft - 構造化ロギング:ビジネス上の失敗には warn/info、システム障害には error を使用する
- チェック例外と非チェック例外の適切な使い分け
- 例外が避けられない場合は、原因のコンテキストを完全に保持して例外を連鎖させる
対象範囲: このリファレンスは、各主要領域について例(良い/悪いコードパターン)ごとに構成されています。該当する例に基づいて推奨事項を適用してください。
制約
関数型例外処理に関する変更を適用する前に、プロジェクトが検証に合格することを確認してください。Either 型を導入する場合は、VAVR 依存関係(io.vavr:vavr)と SLF4J が存在することを確認してください。
- 必須:変更を適用する前に
./mvnw validateまたはmvn validateを実行してください - 安全性:検証に失敗した場合は直ちに停止してください。プロジェクトが有効な状態になるまで先に進まないでください
- 依存関係:
Either型を導入する場合は、VAVR(io.vavr:vavr)と SLF4J が存在することを確認してください - 検証:改善を適用した後に
./mvnw clean verifyまたはmvn clean verifyを実行してください - 適用前:関数型例外処理の各パターンについて、詳細な良い/悪い例、制約、安全対策をリファレンスで確認してください
このスキルを使用する場面
- 関数型例外処理を用いてコードを改善する
- 関数型例外処理を適用する
- 関数型例外処理を用いてコードをリファクタリングする
- Result 型または Either 型を使用して Java のエラーをモデル化する
- 例外に依存したフローを関数型エラー処理に置き換える
ワークフロー
- 関数型例外処理の変更前にプロジェクトを検証する
./mvnw validate または mvn validate を実行し、検証に失敗した場合は直ちに停止してください。
- 必要な依存関係を確認する
Either を導入する場合は、実装前に VAVR(io.vavr:vavr)と SLF4J が存在することを確認してください。
- 関数型例外処理のリファレンスを読み、対象を特定する
references/143-java-functional-exception-handling.md を読み、例外に依存した制御フローをモナド型のエラー型に置き換える箇所を特定してください。
- 関数型例外処理のリファクタリングを適用する
構造化ロギングと明確なエラー契約を備えた、選択した Optional/Either/非同期エラーパターンを実装してください。
- 完全なビルドで検証する
改善を適用した後に ./mvnw clean verify または mvn clean verify を実行してください。
リファレンス
詳細なガイダンス、例、制約については、references/143-java-functional-exception-handling.md を参照してください。