Pythonのバグターミネーター:一般的なエラー例外処理+ + +デバッグ・エラー・コード

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/suoyue_py/article/details/100064234

(A)一般的なエラー

  1. コロン行方不明の場合の終了時に、それ以外の、他に、しばらく、:エラーの原因となったクラス、デフあなたはコロンを追加する必要が声明を:構文エラー:あなたが「無効な構文にSyntaxError」を追加することを忘れプロンプトが表示されます。
  2. 代入演算子=と比較演算子==混乱:構文エラー:「無効な構文でSyntaxErrorを」プロンプトが表示されます。
  3. コードの構造インデントエラー:、:そのような「予期しないインデントIndetationError」などのエラーメッセージが要求されます「 IndentationErrorを:インデント解除は、任意の外側indetationレベルと一致しません」 と「IndentationErrorを:インデントブロックを期待」
  4. 文字列の値を変更し、タプル与えられます
  5. 接続文字列と非文字列は:エラー「例外TypeError: 『をint型に変換できません促すメッセージが表示されます暗黙的をstrには』オブジェクトを」。
  6. 文字列ではエンドツーエンドでの引用符を忘れて:「:文字列リテラルのスキャン中にEOLにSyntaxErrorエラーが要求されます 」。
  7. 変数や関数名スペルミスは:「:名前れる『XXX』 NameErrorエラーを促すメッセージが表示されます定義されていません」。
  8. これは、引用した最大のインデックスのリストよりも:「:範囲外のリストインデックスはIndexErrorエラーが要求されます 」。
  9. 使用する変数名などのキーワードを:「:無効な構文SystaxError」エラーを促すメッセージが表示されます。
  10. 可変付加価値演算子の使用には初期値とは:「:名前れる『XXX』 NameErrorエラーを促すメッセージが表示されます定義されていません」。
  11. 誤用のインクリメント:エラー「:無効な構文SystaxError」を促すメッセージが表示されます。
  12. 最初の引数は、自己引数を追加する方法であることを忘れ:エラープロンプトが表示されます「はTypeError:MyMethodは()を0取り位置引数が、1が与えられました」。

(B)異常

1.異常の概念は
Pythonインタプリタが予期しないプログラムの動作に遭遇したとき、それが出力されます例外(例外)。例えば、ゼロによる除算が発生しました、またはそうで存在しないファイルを開きます。また、例外をスローするraise文を使用することができます。Pythonインタプリタは異常な状態が発生すると、それはプログラムの実行を停止した後、トレース(トレースバック)情報が表示されます。
2.異常内蔵
内蔵の中で定義された例外のPythonを例外モジュール Pythonインタプリタが起動すると、モジュールが自動的にロードされます
:次の例外クラスの最も一般的な意味を
(1)BaseException:すべての例外の基底クラス。
(2)SystemExitを:終了要求インタプリタ。
(3)KeyboardInterrupt:ユーザーが実行を中断します。
(4)例外:一般的なエラーの基本クラス。
(5)を呼び出すとStopIteration:反復子これ以上の値。
(6)GeneratorExit:ジェネレータ(発電機)が異常終了が発生通知します。
(7)SystemExitを:Pythonインタプリタを終了するように要求。
(8)はStandardError:すべての内部標準ベースクラス例外。
(9)ArithmeticError:全ての数値エラーの基本クラス。
(10)FloatingPointError:浮動小数点演算誤差。
(11)はOverflowError:最大値の計算が限界を超えます。
(12)ZeroDivisionError:ゼロ(すべてのデータ型)の他の(または弾性率)エラー。
(13)てAssertionError:アサーションに失敗しました。
(14)はAttributeError:オブジェクトは、このプロパティを持っていません。
(15)例外EOFError:NO内蔵入力、一般的な誤りは、ファイルを読み取ることではないが、他には、Ctrl + Dも、この例外をトリガします。
(16)EnvironmentError:基底クラスのオペレーティングシステムエラー。
(17)例外IOError:入力/出力操作が失敗しました。
(18)OSErrorの:オペレーティング・システム・エラー。
(19)WindowsError:システムコールが失敗しました。
(20)はImportError:インポートモジュール/オブジェクトに失敗しました。
(21)KeyboardInterrupt:ユーザー割り込み(通常はCtrl + C)を実行します。
(22)LookupErrorが:無効なクラスデータベースクエリ。
(23)はIndexError:このシーケンスインデックス(指数)なし。
(24)KeyError例外:マップがこのキーを持っていません。
(25)MemoryError:メモリオーバーフローエラー(Pythonインタプリタのために致命的ではありません)。
(26)NameError:オブジェクトを宣言していないか、オブジェクトが初期化されません。
(27)UnboundLocalError:ローカルアクセス初期化されていない変数。
(28)にReferenceError:ガベージコレクションは、オブジェクトにアクセスしようとしています。
(29)はRuntimeError:一般的なランタイムエラー。
3.処理の例外try ... except文
の文はPythonの例外処理の出力に使用されている以外...してみてください。
構文は次のとおりです。

try:
   <语句>
except [<异常的名称> [, <异常类的实例变量名称>]]:
   <异常的处理语句>
[else:
   <没有异常产生时的处理语句>]

構文ブラケット[]に省略されてもよい
文は例外処理のすべてのタイプを表し除いて、ブランクとすることができる例外の名前
、例外名を一つ以上であってもよい
異なる例外を処理するために、ステートメントを除いて、異なる複数を使用することができます
else文は、異常が発生していない場合の処理手順である
例4.例外クラスを
出力すべき例外があるたびに、例外はすべての属性の例外クラスを継承するクラスのインスタンスを作成します。例外クラスの各インスタンスは、そこにある引数プロパティ。引数は、属性タプル形式、このフォーマットのみタプルエラーメッセージ文字列(1組)を含んでいてもよい、また(2組、3組二つ以上の要素を含むことができます 、...)。
例外の異なるクラスは、このフォーマットが異なるタプルです。
明確な例外は
最後に...試みる文が明確不全として使用することができます。トライ文で失敗するかどうかは、最終的にはステートメントが実行されます。
注意:試してみて、文を一緒に使用することができますを除いて、試してみて、finally文も一緒に使用することができますが、finally文を除いて一緒に置くことはできません。
6.内蔵の例外支援モジュール

  • 、SYSモジュール
    SYSモジュールexc_info()関数を用いては達成することができる異常情報は、現在処理されています。exc_info()関数はタプルを返し、タプルは三つの要素(タイプ、値、特定の情報)を含みます。

  • B、トレースバックオブジェクト
    SYSモジュールexc_info()関数を使用しては、第三の要素の値を返し、トレースバックオブジェクトを返します。インタフェース機能トレースバックオブジェクトは、捕捉フォーマット、又はトラッキングプログラムのPythonスタック(スタックトレース)情報を出力することができます。
    traceback.print_exc():この関数は、例外出力にsys.exc_info()を呼び出します。

7.スロー

  • 、声明を上げる:raise文を使ってPythonは、指定された例外をスローします。例えば:
    >>>raise NameError('这里使用raise抛出一个异常')
    Traceback (most recent call last):
      File "<pyshell#13>", line 1, in <module>
        raise NameError('这里使用raise抛出一个异常')
    NameError: 这里使用raise抛出一个异常

唯一つのパラメータは、スローされた例外に指定上げ、例外はクラスインスタンスまたは異常な(すなわち、例外サブクラス)でなければなりません。
ヒント:あなたは、例外がスローされたかどうかを判断し、それに対処したくないしたい場合は、raise文を使用して、この時間は最良の選択肢です。

  • B、実行するインタプリタのエンドユーザがPythonインタプリタの実行の終了を強制するために、出力SystemExit例外を使用することができます。
    SystemExitを異常sys.exit()関数の意志出力を使用し、sys.exit()関数は、スレッドを終了します。
    Pythonインタプリタ好ましく用いOSモジュール_exit()関数の通常動作の終了まで
  • Cは、ネストされたループを残して:あなたは通常break文を使用して、時間のサイクルを残したい場合。ネストされたループの一つが、break文が唯一の最も内側のループを残すことができますが、ネストされたループを離れることができない場合は、raise文のネストされたループを残すために、この時点で使用することができます。

8.ユーザ定義の例外クラス
組み込みの例外に加えて、Pythonはまた、ユーザー定義の例外をサポートしています。異常は、ユーザ定義の例外には差を構築していないが、例外は、内蔵のモジュールの例外で定義されています。Pythonインタプリタが起動すると、例外モジュールは、事前にロードされます。
Pythonは、ユーザーが独自の例外クラスを定義することができ、ユーザ定義の例外クラスはPythonの組み込みの例外クラスのうちのいずれか1つからでなければなりません派生から。
また、ユーザーは、他のユーザ定義の例外クラスの基本クラスとして、カスタム例外クラスを作成することができます。
作成するときに例外クラスは、標準として名前の例外を除いて、通常は最後に「エラー」です

(C)プログラムのデバッグ

  • 、文をアサート使用して
    assert文を使用することにより、ユーザーは、プログラムコードのエラーを検出することができます。
    ステートメントの構文を主張している:
    主張<テストパターン> [パラメータ]
    テストパターンは、リターンTrueまたはFalseプログラムコードでした。
    テストコードが真返された場合、プログラムコードは、背後に実行し続けます。
    テストコードがfalseを返す場合、文は出力AssertionErrorが例外を主張するだろう。そして、[パラメータ]、文字列としてエラーメッセージを出力文を主張しています。

  • 組み込み変数__debug__を使用して、B、

Python解释器有一个内置变量__debug__,__debug__在正常情况下的值是True。
>>> __debug__
True
当用户以最佳化模式启动Python解释器时,__debug__值为False。要使用最佳化模式启动Python解释器,须设置Python命令行选项-O。
语法格式:
if __debug__:
	if not (<测试码>):
		raise AssertionError [,参数]

(IV)エラーコード

エラーコード(複数含むパイソンのerrnoモジュール、errnoに)表記システム(システム・シンボル)。errnoにオペレーティングシステムによって返される整数エラーコードで定義されたモジュール、およびシステム対応するシンボル。
ユーザが使用する場合、DIR(errnoに)命令を、システムがすべてのエラーコードシンボルを取得することができます。
ここに画像を挿入説明
使用osモジュールにstrerror()関数を、エラーコードは、エラーコードの文字列の記述に変換することができます。エラーコードerror.E2BIG例えば説明string「が長すぎるのArgリスト」です。
ここに画像を挿入説明
ここに画像を挿入説明

おすすめ

転載: blog.csdn.net/suoyue_py/article/details/100064234