Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 例外階層の理解 | Comprehensive Error Handling
Python構造化プログラミング

例外階層の理解

メニューを表示するにはスワイプしてください

Pythonでエラー処理を行う際には、組み込み例外クラスの構造を理解することが重要です。すべてのexceptionsは、ルートクラスであるBaseExceptionから継承されています。日常的に扱うほとんどの例外はExceptionのサブクラスであり、それはBaseExceptionの直接の子クラスです。この設計により、広範なエラーカテゴリを捕捉したり、特定の問題だけを処理したりすることが可能です。

よく使われる例外には、ValueErrorTypeErrorKeyErrorIOError(現代のPythonではOSErrorとしても知られる)などがあり、これらはすべてExceptionのサブクラスです。また、ZeroDivisionErrorIndexErrorのような、より専門的な例外もあり、これらは一般的なクラスから継承されています。一部の例外、例えばKeyboardInterruptSystemExitは、BaseExceptionから直接継承されており、通常のプログラムでは捕捉しないことが推奨されています。

この階層構造を理解することで、意図した例外のみを捕捉し、重要なシステムシグナルを隠さないように、正確なtry/exceptブロックを記述することができます。

1234567891011121314151617181920212223242526272829303132
def raise_and_catch_exceptions(): # Catching a ValueError try: int("not a number") except ValueError as ve: print("Caught ValueError:", ve) # Catching a ZeroDivisionError (subclass of ArithmeticError) try: result = 10 / 0 except ZeroDivisionError as zde: print("Caught ZeroDivisionError:", zde) # Catching a TypeError try: result = "10" + 5 except TypeError as te: print("Caught TypeError:", te) # Catching an OSError (formerly IOError) try: open("file_that_does_not_exist.txt") except OSError as oe: print("Caught OSError:", oe) # Catching a general Exception (will catch most, but not all, exceptions) try: raise KeyError("missing key") except Exception as e: print("Caught Exception:", type(e).__name__, "-", e) raise_and_catch_exceptions()

1. 変換できない文字列を整数に変換しようとした際のエラーを捕捉するには、どの組み込み例外クラスを使用しますか?

2. 存在しない辞書キーにアクセスした場合に発生する組み込み例外はどれですか?

question mark

変換できない文字列を整数に変換しようとした際のエラーを捕捉するには、どの組み込み例外クラスを使用しますか?

正しい答えを選んでください

question mark

存在しない辞書キーにアクセスした場合に発生する組み込み例外はどれですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  1

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  1
some-alt