※有料会員になるとこの動画をご利用いただけます
詳しい説明を読む
#06:例外クラスの継承関係と except 節
このチャプターでは、例外クラスの継承関係について学習しましょう。
- コード:
try:
a = float(input())
b = float(input())
print(a / b)
except ValueError:
print("入力値は数字でなければなりません。")
except ZeroDivisionError:
print("0 で割ることはできません。")
- except 節で受ける例外には、その例外クラスの子孫にあたるクラスのものも含まれる
- そのため、except 節で受ける例外のクラスを Exception にすると、ほとんどすべての例外を受けることができる
try:
a = float(input())
b = float(input())
print(a / b)
except Exception:
print("例外が発生しました。")
- Python の BaseException クラスと Exception クラスはそれぞれ次のようなクラス
- BaseException: すべての例外クラスに継承されるクラス
- Exception: BaseException クラスのサブクラスで、ほとんどすべての例外クラスに継承されるクラス
- そして、それぞれのクラスは次のような意図で定義されている
- BaseException: すべての例外クラスの基底クラス
- Exception: システムの終了以外の例外クラス
- たとえば...
- SystemExit というクラスは Exception クラスを継承せずに、BaseException クラスを直接継承している
- SystemExit クラスは Python の実行を終了させるときに用いられる
- なぜ、Exception クラスを継承せずに、BaseException クラスを直接継承しているかというと、このクラスの例外が
except Exception:
といった except 節に誤って捕捉されないようにするため - 誤って捕捉されると、エラー出力がされないことがある
ログインすると採点できます
コードの実行