『Pythonコアプログラミング』第10章エラーと異常学習ノート
2050 ワード
10.1 Pythonでの異常 NameError:不明な変数 にアクセスしてみます. Zer 0 DivisionError:除数ゼロ SyntaxError:Pythonインタプリタ構文エラー IndexError:要求インデックスがシーケンス範囲 を超えています. KeyError:存在しない辞書キーワードを要求 IOError:入出力エラー Attribute:場所にアクセスしようとするオブジェクト属性 Value Error:値エラー TypeError:タイプエラー、通常は付与値の左右のタイプが異なることによるエラー を指す.
10.2異常の検出と処理
10.2.1 try-except文
複数の例外を1つのexpect文に配置することもできます.
異常はPython 2.5にあるため、新しいクラスに移行され、BaseException、KeyboardInterrupt、SystemExitとExceptionのレベルを持つ新しい「すべての異常の母」が有効になった.
すべての例外をキャプチャする必要がある場合は、次のように書きます.
10.2.2 try-finally文
try-finallyとtry-excpetの違いは、異常をキャプチャするために使用されるのではなく、異常が発生するかどうかにかかわらず、一貫した動作を維持するために使用されることが多いことです.
例を挙げると、ファイルを読み込もうとしたときに例外が投げ出され、最終的にはファイルを閉じる必要があります.コードはこのように処理できます.
10.2.3 try-except-else-finally文まとめ
10.2異常の検出と処理
10.2.1 try-except文
try:
try_suite #
except Exception1[, reason1]:
except_suite1 # 1
except Exception2[, reason1]:
except_suite1 # 2
except Exception3[, reason1]:
except_suite1 # 3
...
複数の例外を1つのexpect文に配置することもできます.
try:
try_suite #
except (Exception1, Exception2)[, reason1]:
except_suite #
異常はPython 2.5にあるため、新しいクラスに移行され、BaseException、KeyboardInterrupt、SystemExitとExceptionのレベルを持つ新しい「すべての異常の母」が有効になった.
すべての例外をキャプチャする必要がある場合は、次のように書きます.
try:
try_suite #
except BaseException, e:
except_suite #
10.2.2 try-finally文
try-finallyとtry-excpetの違いは、異常をキャプチャするために使用されるのではなく、異常が発生するかどうかにかかわらず、一貫した動作を維持するために使用されることが多いことです.
try:
try_suite
finally:
finally_suite #
例を挙げると、ファイルを読み込もうとしたときに例外が投げ出され、最終的にはファイルを閉じる必要があります.コードはこのように処理できます.
try:
try:
ccfile = open('carddata.txt','r')
txns = ccfile.readlines()
except IOError:
log.write('no txns this month
')
finally:
ccfile.close()
10.2.3 try-except-else-finally文まとめ
try:
try_suite
except Exception1:
suite_for_Exception1
except (Exception2, Exception3, Exception4):
suite_for_Exception_2_3_and_4
except Exception5, Argument5:
suite_for_Exception5_plus_argument
except (Except6, Except7), Argument76:
suite_for_Exception6_and_7_plus_argument
except:
suite_for_all_other_exceptions
else:
no_exceptions_detected_suite
finally:
always_execute_suite