例外階層の理解
メニューを表示するにはスワイプしてください
Pythonでエラー処理を行う際には、組み込み例外クラスの構造を理解することが重要です。すべてのexceptionsは、ルートクラスであるBaseExceptionから継承されています。日常的に扱うほとんどの例外はExceptionのサブクラスであり、それはBaseExceptionの直接の子クラスです。この設計により、広範なエラーカテゴリを捕捉したり、特定の問題だけを処理したりすることが可能です。
よく使われる例外には、ValueError、TypeError、KeyError、IOError(現代のPythonではOSErrorとしても知られる)などがあり、これらはすべてExceptionのサブクラスです。また、ZeroDivisionErrorやIndexErrorのような、より専門的な例外もあり、これらは一般的なクラスから継承されています。一部の例外、例えばKeyboardInterruptやSystemExitは、BaseExceptionから直接継承されており、通常のプログラムでは捕捉しないことが推奨されています。
この階層構造を理解することで、意図した例外のみを捕捉し、重要なシステムシグナルを隠さないように、正確なtry/exceptブロックを記述することができます。
1234567891011121314151617181920212223242526272829303132def 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. 存在しない辞書キーにアクセスした場合に発生する組み込み例外はどれですか?
すべて明確でしたか?
フィードバックありがとうございます!
セクション 1. 章 1
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 1. 章 1