例外処理: エラーへの対処
try/except でエラーをキャッチ。具体的な例外を狙う。
try
例外が発生しうるコードを囲む。
except
例外をキャッチして処理。
raise
例外を発生させる。
例外処理基礎
エラーが起きそうな場所を `try` ブロックで囲み、起きたときのアクションを `except` ブロックに書きます。これにより、1つのエラーでアプリ全体が停止するのを防ぎ、ユーザーに適切なメッセージを表示したり、ログを記録したりできます。
try: result = 10 / 0except ZeroDivisionError as e: print(f"エラー: {e}")else: print("成功!")finally: print("必ず実行")
# 例外を発生させるdef validate_age(age): if age < 0: raise ValueError("Age must be positive") return ageBad
# ❌ Bad: 全ての例外をキャッチtry: result = do_something()except Exception: # バグを隠す passGood
# ✅ Good: 具体的な例外をキャッチtry: result = do_something()except ValueError as e: logger.error(f"Invalid value: {e}")except IOError as e: logger.error(f"IO error: {e}")カスタム例外
# カスタム例外class ValidationError(Exception): def __init__(self, field: str, message: str): self.field = field self.message = message super().__init__(f"{field}: {message}")
# 使用def validate_email(email: str): if "@" not in email: raise ValidationError("email", "Invalid format")
try: validate_email("invalid")except ValidationError as e: print(f"Field: {e.field}, Message: {e.message}") Tip: Exception を継承してドメイン固有の例外を作る。
合格ライン
try/except を使える
カスタム例外を定義できる
演習課題
課題1: try/except
try/except で例外を捕捉してください。
課題2: カスタム例外
Exception を継承してカスタム例外を作成してください。