エラー処理: 例外をコントロール
try/catch で例外をキャッチ。カスタムエラーで詳細を伝える。
try/catch
エラーをキャッチして処理。
throw
エラーを発生させる。
finally
必ず実行されるブロック。
エラー処理基礎
プログラムは予期せぬ入力や通信エラーで簡単に停止します。エラーハンドリングを適切に行うことで、一部が失敗してもアプリ全体を道連れにせず、ユーザーに「何が起きたか」を優しく伝えることができます。
try { const data = JSON.parse(invalidJson);} catch (error) { if (error instanceof SyntaxError) { console.error('Invalid JSON:', error.message); } else { throw error; // 再スロー }} finally { cleanup(); // 必ず実行}
// エラーをスローfunction divide(a: number, b: number): number { if (b === 0) throw new Error('Division by zero'); return a / b;}Bad
// ❌ Bad: 全てのエラーを握りつぶすtry { riskyOperation();} catch (e) { // 何もしない — バグを隠す}Good
// ✅ Good: 適切にハンドリングtry { riskyOperation();} catch (error) { console.error('Error:', error); reportToService(error); throw error; // 必要なら再スロー}パターン
// カスタムエラーclass ValidationError extends Error { constructor(public field: string, message: string) { super(message); this.name = 'ValidationError'; }}
// async/await でのエラー処理async function fetchData() { try { const res = await fetch('/api/data'); if (!res.ok) throw new Error(`HTTP ${res.status}`); return await res.json(); } catch (error) { console.error('Fetch failed:', error); return null; }}
// Optional chaining でエラー回避const name = user?.profile?.name ?? 'Anonymous'; Tip: async 関数内の try/catch で Promise のエラーもキャッチ。
合格ライン
カスタムエラーを定義できる
async/await のエラー処理ができる
演習課題
課題1: try/catch
try/catch でエラーを捕捉してください。
課題2: カスタムエラー
カスタムエラークラスを作成してください。