ホームページ >バックエンド開発 >Python チュートリアル >Python で例外処理を処理する方法
Python での例外処理の問題に対処する方法
例外はプログラム内のエラーです。プログラム内で例外が発生した場合、例外処理メカニズムを使用してキャプチャすることができます。これらの例外を処理して、プログラムが正常に動作するようにします。
Python は、豊富で強力な例外処理メカニズムを提供しており、try-Except ステートメントを通じて例外をキャッチして処理できます。以下では、Python で例外を正しく処理する方法と具体的なコード例を紹介します。
Python では、try-Except ステートメントは例外をキャッチするために使用されます。その基本的な形式は次のとおりです:
try: # 可能会出现异常的代码块 except [异常类型]: # 处理异常的代码块
上記のコードでは、try ブロックには例外を引き起こす可能性のあるコードが含まれています。try ブロック内のコードで例外が発生した場合、try ブロック内の残りのコードは次のようになります。スキップして直接除外ブロック内のコードを実行します。
try-Except ステートメントでさまざまなタイプの複数の例外をキャプチャし、さまざまな例外状況に適応できます。各例外ブロックは、特定のタイプの例外をキャッチできます。
try: # 可能会出现异常的代码块 except [异常类型1]: # 处理异常1的代码块 except [异常类型2]: # 处理异常2的代码块 ... except [异常类型n]: # 处理异常n的代码块
たとえば、ZeroDivisionError 例外と FileNotFoundError 例外の両方をキャッチできます。
try: x = 1 / 0 f = open("nonexistent.txt", "r") except ZeroDivisionError: print("除数不能为0") except FileNotFoundError: print("文件不存在")
すべての例外タイプをキャッチしたい場合は、次のようにします。一般的な Exception 例外タイプを使用してキャッチできます。
try: # 可能会出现异常的代码块 except Exception: # 处理异常的代码块
この場合、どのような例外タイプが発生しても、例外ブロック内のコードによってキャッチされます。ただし、実際のプログラム エラーが隠蔽されないように、例外を処理するときは特定の例外情報を表示することが最善であることに注意してください。
try-Except ステートメントに加えて、Python には、例外が発生するかどうかに関係なく特定のコードを実行するために使用されるfinally ステートメントも用意されています。
try: # 可能会出现异常的代码块 except [异常类型]: # 处理异常的代码块 finally: # 无论是否发生异常都会执行的代码块
finally ステートメントのコードは、常に try-excel ステートメントの実行後に実行されます。
例外を処理する場合、e
または他の名前を使用して、後続の処理のためにキャプチャされた例外情報を取得できます。
try: # 可能会出现异常的代码块 except [异常类型] as e: print("发生异常:", e)
上記のコードでは、e
はキャプチャされた例外オブジェクトを表します。e
を使用すると、例外の特定の情報を取得できます。
例外をキャッチするだけでなく、手動で例外をスローして、プログラム内でエラーをアクティブにトリガーすることもできます。
raise [异常类型](异常信息)
たとえば、手動で ValueError 例外をスローできます。
def foo(x): if x < 0: raise ValueError("x不能为负数") # 其他处理代码 try: foo(-1) except ValueError as e: print("发生异常:", e)
上記のコードでは、foo 関数のパラメータ x が負の数の場合、手動で ValueError 例外をスローしてハンドルを処理します。例外でパーツがキャプチャされ、処理されます。
要約すると、try-excel ステートメントとその他の例外処理メカニズムを通じて、Python プログラムの例外を柔軟に処理し、プログラムの正常な動作を保証できます。実際の開発では、例外処理メカニズムを適切に使用することで、プログラムの堅牢性と保守性を効果的に強化できます。
参考資料:
以上がPython で例外処理を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。