Pythonの - >(6)学習ノート

例外処理

  • NameError
  • 例外TypeError
  • 例外処理(TRY ...を除きます)
  • スローされる例外(レイズ)
  • finally節

プログラムの実行中に発生したエラーは異常ですこのようのpython3の構文で使用Python2ユニーク発生するなどのエラーメッセージを、関連する各例外のショーはSyntaxError、最初の複数行が誤ってスペースを打つ生成しますIndentationError

  1. NameError
    時に未定義の変数アクセスNameErrorが発生します。
    例えば、
>>> print(kushal)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'kushal' is not defined

最後の行は、エラーの詳細が含まれ、残りの行は、(例外を発生させたか、どのような)それが起こったのかの詳細を表示します。

  1. 例外TypeError
    不適切な操作または機能が、オブジェクトタイプの開始剤に適用した場合、一般的な例は、整数加算と文字列であるです。
>>> print(1 + "kushal")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
  1. 例外処理

使用するtry...exceptすべての例外を処理するためにブロックを。このような基本的な構文は次のとおりです。

try:
    statements to be inside try clause
    statement2
    statement3
    ...
except ExceptionName:
    statements to evaluated in case of ExceptionName happens

これは次のように動作します:

  1. まず、try句(中tryexceptキーワードの間の部分)。

  2. 例外が発生しない場合、excepttryの文の後は無視終了します。

  3. 場合はtry例外が実行句中に発生し、その後、節の残りの部分は無視されます。
    例外が一致する場合except、例外タイプのキーワードが指定され、対応する実行except句。その後に進んtry文の後のコード。

  4. 例外が発生した場合は、except無分岐マッチング句は、それがに渡されるtry声明。
    それでも、対応する最後の文の処理が見つからない場合は、メッセージが表示されますと、未処理の例外と実行が停止しています。

栗:

>>> def get_number():
...     "Returns a float number"
...     number = float(input("Enter a float number: "))
...     return number
...
>>>
>>> while True:
...     try:
...         print(get_number())
...     except ValueError:
...         print("You entered a wrong value.")
...
Enter a float number: 45.0
45.0
Enter a float number: 24,0
You entered a wrong value.
Enter a float number: Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
  File "<stdin>", line 3, in get_number
KeyboardInterrupt

まず、私は、適切な浮動小数点値を入力し、インタプリタは、出力値を返します。

私は、カンマ区切り値を入力投げる場合ValueError、例外exceptの句キャッチを、エラーメッセージをプリントアウトします。

私は三回押すCtrl + Cにつながった、KeyboardInterruptプログラムの実行が中断されるように例外を、例外は、ブロック以外でキャッチされていません。

空のexceptステートメントは、すべての例外をキャプチャすることができます

>>> try:
...     input() # 输入的时候按下 Ctrl + C 产生 KeyboardInterrupt
... except:
...     print("Unknown Exception")
...
Unknown Exception
  1. 例外をスロー
    raise文を使って例外をスローします。
>>> raise ValueError("A value error happened.")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: A value error happened.

あなたはそれらをキャッチするために、他の普通のような異常をキャプチャすることができます。

>>> try:
...     raise ValueError("A value error happened.")
... except ValueError:
...     print("ValueError in our code.")
...
ValueError in our code.
  1. クリーンアップ行動の定義
    try文は、他のオプションがあるfinally句が実行されなければならないどのような場合に定義することを意図しています。例えば:
>>> try:
...     raise KeyboardInterrupt
... finally:
...     print('Goodbye, world!')
...
Goodbye, world!
KeyboardInterrupt
Traceback (most recent call last):
  File "<stdin>", line 2, in ?

例外が発生したかどうかは、finallyプログラムの休暇中句はtry、後に実行されるように確信しています。ときにtry文は起きていないexceptで、例外トラップを(またはそれがexcept節や他の起こり)finally、それの実装が再スローされます後に句。

実際のアプリケーション・シナリオでは、finally句は関係なく、彼らはもちろん間違ったのであるかどうかの、外部リソース(ファイルやネットワーク接続など)を放出するのに便利です。

で述べたようにwithある文で、try-finally使用して、ブロックの省略表現withファイルを確実にするためのステートメントを常に閉じています。

異常は何?実際には、異常

出典:
実験棟

公開された33元の記事 ウォンの賞賛1 ビュー1251

おすすめ

転載: blog.csdn.net/weixin_44783002/article/details/104582010
おすすめ