Pythonの例外を詳しく解説

王林
リリース: 2023-06-10 17:43:45
オリジナル
2455 人が閲覧しました

Python は優れたプログラミング言語であり、その読みやすさと理解のしやすさ、豊富なパッケージ ライブラリにより、さまざまな分野で幅広い用途に使用されています。ただし、Python コードを作成するプロセスでは、変数名エラー、構文エラーなど、いくつかのエラーが必然的に発生します。このとき、Python は例外処理を使用して、プログラムの予期せぬ停止を回避し、プログラムのデバッグ プロセスを簡素化することができます。プログラミングの効率も向上します。この記事では、例外の種類、例外処理方法、例外スタック トレースなど、Python の例外について詳しく紹介します。

1. 例外の種類

  1. SyntaxError: 構文エラー

Python インタープリターがプログラム内で構文エラーを検出すると、SyntaxError 例外がスローされます。 。例:

print 'hello world'
ログイン後にコピー

Python 3.x バージョンでは、print は括弧内に記述する必要があります。正しい書き方は次のとおりです:

print('hello world')

まだ print 'hello world' と書かれている場合、プログラムの実行時に SyntaxError 例外がスローされます。

  1. NameError: 変数名エラー

Python は未定義の変数に遭遇すると、NameError 例外をスローします。例:

a = 1
print(b)
ログイン後にコピー

変数 b が定義されていないため、NameError 例外がスローされます。

  1. TypeError: タイプ エラー

サポートされていない操作タイプを使用しようとすると、TypeError 例外がスローされます。例:

a = 'hello'
b = 5
print(a + b)
ログイン後にコピー

文字列と整数を直接追加できないため、TypeError 例外がスローされます。

  1. ZeroDivisionError: ゼロ除算エラー

ゼロ除算しようとすると、ZeroDivisionError 例外がスローされます。例:

a = 5 / 0
ログイン後にコピー

ゼロによる除算は不正な操作であるため、ZeroDivisionError 例外がスローされます。

  1. IndexError: インデックス エラー

IndexError 例外は、リストまたはタプルに存在しない要素にアクセスしようとするとスローされます。例:

a = [1, 2, 3]
print(a[3])
ログイン後にコピー

a には 3 つの要素しかないため、インデックス 3 にアクセスすると IndexError 例外がスローされます。

  1. KeyError: ディクショナリ キー エラー

KeyError 例外は、ディクショナリに存在しないキーにアクセスしようとするとスローされます。例:

a = {'name': 'Tom', 'age': 20}
print(a['gender'])
ログイン後にコピー

キー「gender」が a に存在しないため、KeyError 例外がスローされます。

  1. ValueError: 値エラー

関数のパラメーターの型は正しいが、パラメーターの値が間違っている場合、ValueError 例外がスローされます。例:

a = int('abc')
ログイン後にコピー

「abc」は整数型に変換できないため、ValueError 例外がスローされます。

2. 例外処理メソッド

Python では、try-Except ステートメントを使用して例外を処理できます。 Try ブロックには問題が発生する可能性のあるコード ブロックが含まれ、Exception ブロックには例外が発生した場合の処理​​コードが含まれます。

複数の例外タイプを処理する場合は、複数の else ステートメントを使用できます。例:

try:
    a = 1 / 0
except ZeroDivisionError:
    print('除数为零')
except TypeError:
    print('类型错误')
ログイン後にコピー

try ブロックのコードを実行するときに ZeroDivisionError 例外が発生すると、プログラムは最初のブロックのコードを実行して、「除算はゼロです」と出力します。TypeError 例外が発生した場合、ブロック内のコードは「TypeError」を出力します。

すべての種類の例外をキャッチしたい場合は、Except ステートメントの基本形式を使用できます。

try:
    # 可能会出错的代码
except:
    # 异常处理代码
ログイン後にコピー

現時点では、Except ブロック内のコードはすべての種類の例外をキャッチします。 。

try-Except ステートメントに加えて、Python には、例外が発生したかどうかに関係なく実行されるコード用のfinally 句も用意されています。例:

try:
    # 可能会出错的代码
except:
    # 异常处理代码
finally:
    # 无论如何都会执行的代码
ログイン後にコピー

3. 例外スタック トレース

Python プログラムを作成する場合、例外が発生すると、プログラムは例外の種類と例外情報を要求するだけでなく、例外も表示します。スタック トレース情報、つまり、例外が発生したときのコード呼び出しスタック。

例外スタック トレース情報は非常に便利で、例外が発生したコードの場所を見つけるのに役立ち、問題のデバッグと修正が容易になります。

以下は例外スタック トレース情報の例です。

Traceback (most recent call last):
  File "exceptions.py", line 11, in <module>
    c = a / b
ZeroDivisionError: division by zero
ログイン後にコピー

このうち、Traceback では例外スタック トレース情報全体が表示され、最後の行には例外の種類と例外情報が表示されます。

の 11 行目のファイル「例外.py」には、例外が発生したコードのファイル名と行番号が表示されます。

長時間実行されるプログラムや運用環境のプログラムの場合、例外スタック トレース情報をログ ファイルに書き込んで、イベント後の分析を容易にすることができます。

4. 概要

この記事では、例外の種類、例外処理方法、例外スタック トレースなど、Python の例外について詳しく紹介します。 Python プログラムを作成する場合、例外処理は必須かつ重要なスキルであり、プログラム内で例外を処理することによってのみ、プログラムの安定性と正確性が保証されます。

以上がPythonの例外を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート