ホームページ > バックエンド開発 > Python チュートリアル > Pythonで例外をキャッチして処理する方法は何ですか?

Pythonで例外をキャッチして処理する方法は何ですか?

WBOY
リリース: 2023-05-10 20:19:05
転載
1772 人が閲覧しました

Python 例外は、プログラムの実行中に発生するエラーであり、プログラムが終了する可能性があります。

Python の例外処理は、プログラム内で例外が発生したときに開発者が例外をキャッチ、処理、報告できるようにするメカニズムであり、例外が発生したときにプログラムの実行を継続したり正常に終了したりできます。

Python では、例外は標準例外 (SyntaxError や TypeError など) またはカスタム例外になります。標準例外は Python によって内部的に定義されますが、カスタム例外は開発者によって、通常は特定のアプリケーションまたはライブラリに対して定義されます。

一般的な Python 例外の一部を次に示します:

  • SyntaxError: 構文エラー。通常は、括弧の欠落、コロンの待機などの構文エラーが原因で発生します。 。

  • TypeError: 型エラー。通常は、文字列と数値の追加など、異なる型のオブジェクトを組み合わせることで発生します。

  • ValueError: 値エラー。通常は、文字列を整数に変換する際の無効な文字列など、指定された値が予期された範囲または形式に準拠していないことが原因で発生します。

  • IndexError: インデックス エラー。通常、リストまたはタプルに存在しない要素にアクセスしようとしたことが原因で発生します。

  • KeyError: キー エラー。通常、辞書に存在しないキーにアクセスしようとしたことが原因で発生します。

  • IOError: 入出力エラー。通常、ファイルの読み取りまたは書き込み中に問題が発生したことが原因で発生します。

  • AttributeError: 属性エラー。通常、オブジェクトに存在しないプロパティまたはメソッドにアクセスしようとしたことが原因で発生します。

Python では、try-excel ステートメントを使用して例外をキャッチし、処理できます。 try ステートメントには例外を引き起こす可能性のあるコードが含まれており、Except ステートメントには例外がキャッチされたときに実行されるコードが定義されています。

複数の else ステートメントを使用して、さまざまな種類の例外をキャプチャできます。Try-Except を else と組み合わせることもできます。その意味は、try ステートメントで例外が検出されなかった場合に、else ステートメントが実行されるということです。さらに、finally ステートメントを使用して、try ステートメント ブロックの後に常に実行されるコードを定義することもできます。

例:

ケース 1: try-exc ステートメントを使用して例外をキャッチし、処理する

例:

try:
100/0 # 例外を引き起こす可能性のあるコード

except ZeroDivisionError: #(捕获特定的异常类型ZeroDivisionError,ZeroDivisionError是Python中的内置异常类之一,用于表示在除数为零的情况下进行了除法操作所引发的异常。)

    print('因为这里打印出异常类型:除数不能为0。')# 处理值错误的代码
ログイン後にコピー

Pythonで例外をキャッチして処理する方法は何ですか?

ケース 2: try を使用する例外ステートメントは、else ステートメントとペアになります (try ステートメントが例外を検出しなかった場合、else ステートメントの内容が実行されます)

try ステートメントが例外を検出した場合、else ステートメントは実行されません。内容

>>> try:
...     1 / 0
... except:
...     print("逮到了~")
... else:
...     print("没逮到~")
...
ログイン後にコピー

Caught~

try ステートメントで例外が検出された場合、Except ステートメントの例外処理内容が実行されます:

>>> try:
...     1 / 1
... except:
...     print("逮到了~")
... else:
...     print("没逮到~")
...
1.0
ログイン後にコピー

Not catch~

ケース 3: try-excel ステートメントとfinally ステートメントを使用する (例外が発生するかどうかに関係なく実行する必要がある最後のステートメント)

例:

try:
‘abc’ 123

except TypeError: #TypeError为类型错误,通常是由于将不同类型的对象组合在一起而引起的,如将字符串和数字相加。
    print('因为这里打印出异常类型:类型错误。')# 处理类型错误的代码
finally:
    print('不论是否无法异常,都执行这句话') # 无论是否发生异常都会执行的代码
ログイン後にコピー

Pythonで例外をキャッチして処理する方法は何ですか?

例外処理は Python の重要な概念の 1 つであり、開発者はその方法を理解する必要があります。例外をキャッチして処理し、プログラムの安定性と信頼性を確保します。

上級: 例外をキャッチする方法

例外をキャッチする 2 つの方法: 例外の種類に関係なく、例外情報がキャプチャされます。

1. 例外を使用する: すべての例外は Exception のサブクラスです。したがって、Exception はすべてのタイプの例外に一致します。

例:

>>> try:
    100/0
except Exception  as e:
    print('未知异常:', e)
# 对于很多刚学Python或者是学着学着迷茫了的小伙伴,我给大家准备了一套Python的学习资料。
# 包括数百本电子书、Python基础视频教程、项目实战,疑难解答,直接在文末名片自取。
   
未知异常: division by zero
>>>
ログイン後にコピー

例外の原因は正常に取得できますが、詳細な例外情報(例外が送信された場所や例外のコード)は出力できません。

2. トレースバック モジュールの使用: トレースバック モジュールの format_exc 関数を使用して、例外情報と、例外が発生した関数呼び出しスタック情報を表示します。

例:

>>>  import traceback
>>>  try:
    100/0
except  :
    print(traceback.format_exc())
 
 
Traceback (most recent call  last):
  File "<pyshell#5>", line 2, in <module>
ZeroDivisionError: division by  zero
>>>
ログイン後にコピー

上記のコードは、例外の原因となった詳細な関数呼び出しスタック情報を出力します

以上がPythonで例外をキャッチして処理する方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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