入出力・エラーと例外・クラス・標準ライブラリ・対話環境(7,8,9,10,14章)
次のコードを実行するとどうなるか。 try: result = 10 / 0 except Exception: print("一般エラー") except ZeroDivisionError: print("ゼロ除算エラー")
- A「ゼロ除算エラー」が出力される
- ✓「一般エラー」が出力される
- C両方の文字列が出力される
- Dexcept節の順序が不正なため定義時にSyntaxErrorになる
解説
ZeroDivisionErrorはExceptionのサブクラスであるため、先に書かれたexcept Exceptionで捕捉されてしまい、後続のexcept ZeroDivisionErrorには到達しない。定義時にはエラーにならず実行時にこの挙動となる。
根拠Pythonチュートリアル8章 エラーと例外(複数のexcept節と例外クラスの階層)