Error Boundary — エラーハンドリング
Error Boundary — エラーハンドリング
💡 なぜ学ぶべきなのか?
概念
Error Boundaryは、Reactのコンポーネントツリーでエラーが発生したときにアプリ全体がクラッシュするのを防ぎ、代わりにフォールバックUIを表示するエラー分離メカニズムです。本番環境ではユーザー体験を守り、安定したサービスを維持するために不可欠です。
なぜ重要なのか?
実際の運用環境では、サードパーティライブラリのバグや予期しないデータによるランタイムエラーが発生すると、画面全体が真っ白になることがあります。Error Boundaryがあれば、エラーが発生したセクションだけがエラーUIに置き換わり、ユーザーはサービスを使い続けることができます。また、エラーレポーティングと連携して障害検知やデバッグにも活用できます。
コアコンセプト
Error Boundaryは建物の防火壁のようなものです。ある部屋で火事が起きても、防火壁があれば他の部屋に燃え広がりません。ReactのError Boundaryも同様に、コンポーネントツリーの特定部分でエラーが発生してもアプリ全体が止まらないようにエラーを「分離」し、ユーザーには適切なフォールバックUIを表示します。
キーポイント
- ▸クラスコンポーネントでのみ実装可能(React 19時点)
- ▸子コンポーネントのレンダリングエラーとライフサイクルメソッドのエラーのみをキャッチ
- ▸イベントハンドラ、非同期コード、サーバーサイドレンダリングのエラーはキャッチ不可
- ▸エラーログと連携して本番モニタリングに活用
💡 ⚠️ よくある間違い
- ▸Error Boundaryをツリーの最上位にのみ配置し、エラー発生時にページ全体がフォールバックUIになってしまうケース
- ▸イベントハンドラや非同期コードのエラーもError Boundaryがキャッチしてくれると誤解するケース(それらには別途try-catchが必要)
- ▸エラーロギングなしにフォールバックUIを表示するだけにとどまり、本番中の問題把握が困難になるケース
💡 🎯 面接対策
Q: Error Boundaryがキャッチできるエラーとできないエラーの違いを説明してください。
Q: Error Boundaryをアプリケーション内でどのように戦略的に配置しますか?
Q: Error Boundaryとtry-catchの違いは何ですか?
ヒント: Error Boundaryはレンダリング中のエラーのみをキャッチし、イベント・非同期コードにはtry-catchが必要。戦略的な配置でエラーを分離してUXを保護。getDerivedStateFromErrorとcomponentDidCatchの役割を区別。エラーレポーティングとモニタリング連携の重要性を強調。