Pythonの例外処理
例外処理の構文
try/exceptで例外処理を行う。
l=[1,2,3,4,5,6,7] try: # l[8] #IndexError: list index out of range a = '文字列'+l[3] #以下のように個別に例外を処理することが出来る except IndexError as ext: print(f'エラーが発生しました:{ext}') #エラーが発生しました:list index out of range #エラーハンドリングは一つのみならず複数付加することが可能。またExceptionを付加することでどのエラーでもハンドリングできる #しかしExceptionを使用してのエラーハンドリングは推奨されてはいない except Exception as ext: print(f'その他のエラーが発生しました:{ext}') #その他のエラーが発生しました:can only concatenate str (not "int") to str #プログラムの最後に必ず実行したいものはfinallyの中に記述する。 finally: print('プログラムを終了します') #プログラムを終了します
Pythonの組み込みException一覧
ディレクトリのような構造になっており、Exceptionは通常使用する例外処理の中で一番外側にあるためすべての例外処理で使用することができる。
#Pythonの組み込み例外 # BaseException # +-- SystemExit # +-- KeyboardInterrupt # +-- GeneratorExit # +-- Exception # +-- StopIteration # +-- StopAsyncIteration # +-- ArithmeticError # | +-- FloatingPointError # | +-- OverflowError # | +-- ZeroDivisionError # +-- AssertionError # +-- AttributeError # +-- BufferError # +-- EOFError # +-- ImportError # | +-- ModuleNotFoundError # +-- LookupError # | +-- IndexError # | +-- KeyError # +-- MemoryError # +-- NameError # | +-- UnboundLocalError # +-- OSError # | +-- BlockingIOError # | +-- ChildProcessError # | +-- ConnectionError # | | +-- BrokenPipeError # | | +-- ConnectionAbortedError # | | +-- ConnectionRefusedError # | | +-- ConnectionResetError # | +-- FileExistsError # | +-- FileNotFoundError # | +-- InterruptedError # | +-- IsADirectoryError # | +-- NotADirectoryError # | +-- PermissionError # | +-- ProcessLookupError # | +-- TimeoutError # +-- ReferenceError # +-- RuntimeError # | +-- NotImplementedError # | +-- RecursionError # +-- SyntaxError # | +-- IndentationError # | +-- TabError # +-- SystemError # +-- TypeError # +-- ValueError # | +-- UnicodeError # | +-- UnicodeDecodeError # | +-- UnicodeEncodeError # | +-- UnicodeTranslateError # +-- Warning # +-- DeprecationWarning # +-- PendingDeprecationWarning # +-- RuntimeWarning # +-- SyntaxWarning # +-- UserWarning # +-- FutureWarning # +-- ImportWarning # +-- UnicodeWarning # +-- BytesWarning # +-- EncodingWarning # +-- ResourceWarning
以上。