組み込み開発のためのPython · レッスン 203 / 220
例外を捕捉して失敗を伝える
具体的な例外を扱い、後片付けを保証し、失敗を成功に見せない方法を学びます。
外部機器との通信やファイル読込は、タイムアウト・権限不足・形式違いなどで失敗します。例外を適切な境界で扱い、失敗の理由を失わないようにします。
捕捉する例外を絞る
`except Exception`で広く捕捉して何もせず続けると、データ破損や通信失敗に気付けないことがあります。回復できる例外だけを捕捉し、回復できない場合は情報を保って上位へ伝えます。入力不備には`ValueError`、期限切れには`TimeoutError`のように、意味に沿った例外を使います。
後始末はfinallyやwithに任せる
例外が起きても通信ポートやファイルを閉じる必要があります。コンテキストマネージャーを持つ資源では`with`を使い、確実に解放します。独自の資源管理では`try/finally`で後片付けを保証し、エラー時にも安全な状態へ戻る手順を確認します。
コード例
手元のPython環境に貼り付ける前に、使用しているPythonの版と対象ライブラリの対応を確認してください。
from pathlib import Path
path = Path("settings.txt")
try:
text = path.read_text(encoding="utf-8")
except FileNotFoundError as exc:
raise RuntimeError(f"設定ファイルがありません: {path}") from exc
if not text.strip():
raise ValueError("設定ファイルが空です")手を動かす課題
存在しないファイルと空のファイルを別々に用意し、理由の異なるエラーとして扱ってください。