python-08の異常

#異常
#8.1どのような例外である
異常な状態を表現するために#の例外オブジェクト、およびエラーが発生した場合に例外をスローします。オブジェクトは、例外処理(またはキャプチャ)、エラーメッセージとプログラムの終了でない場合は

#8.2は、あなたは物事が軌道に沿ってうまくいか指定することができます

#8.2.1レイズ
#raise例外

#8.2.2カスタム例外クラス
(クラスSomeCustomException例外):
パス

#8.3キャプチャ異常
'' '
試み:
X = INT(INPUT('最初の番号を入力してください。 '))
Y = INT(INPUT(' SECOND番号を入力してください:「))
印刷(X / Y)
を除きますZeroDivisionError:
印刷(! 'SECOND、ナンバーCANで\'トンBE ZERO ')
' ''
パラメータにレイズ提供されていません#8.3.1
クラスMuffledCalculator:
こもり= Falseの
DEFのCalc(セルフ、expr)は:
トライ:
リターンはeval(exprのを)
ZeroDivisionError除く:
:self.muffledもし
プリント( 'ゼロ除算が違法である')
他:
昇給

電卓= MuffledCalculator()
プリント(calculator.calc('10 / 2' ))
calculator.muffled = Trueの
印刷(calculator.calc( '10 / 0 '))

#8.3.2多个子句以外
'''
試み:
X =入力( '最初の番号を入力してください')
Y =入力( '第二の数を入力してください')
プリント(評価(X / Y))
ZeroDivisionError除い:
印刷( '二番目の数字は\できる' tはゼロになる')!
TypeError例外を除い:
プリント('それwasn \ '数TAは、でしたか?')
''」

#8.3.3キル一石2羽の鳥
'「」
してみてください。
X =入力( '最初の番号を入力してください')
Y =入力( '第二の数を入力してください')
プリント(エバール(X / Y))
(ZeroDivisionError、例外TypeError、NameError)を除く:
プリント(「あなたの数が偽でした。 .. ')
'''
#8.3.4 捕获对象
''」
試みる:
X =入力( '最初の番号を入力してください')
Y =入力( '第二の数を入力してください')
プリント(エバール(X / Y) )
Eとして(ZeroDivisionError、例外TypeError、NameError)を除く:
プリント(E)
'' '
#8.3.5一网打尽
'''
試み:
X =入力( '最初の番号を入力してください')
Y =入力( '第二番号を入力:」)
プリント(evalの(X / Y))
を除い:
プリント( '何かの間違ったが起こりました...')
'「
それだけであなたが精神的に準備したエラーを隠していない、また、あなたの間違い隠すために考えられないので、#キャッチすべての例外は危険です

#8.3.6すべてがうまくなりますとき
「」」
:しばらく真の
試み:
X-INT = (INPUT( '最初の番号を入力してください。'))
:Y = INT()INPUT( 'SECOND番号を入力します')
印刷( 'X / Y IS'、X / Y)
例外としてEを除く:
印刷(「不正な入力:「E)
...印刷(」不正な入力してくださいもう一度やり直してください『)
他:
BREAK
』 『』
最後に#8.3.7最後に
試してみてください
。1/0
を除く:
印刷( 『不明な変数』)
他:
印刷(「それウェントワースまあ!「)
最後に:
印刷(」「クリーンアップ。)

#8.4の機能および異常な
デフ故障():
例外昇給( '何かを間違っている')

DEFのignore_exception():
障害のある()

()へのhandle_exceptionはのためのDEF:
試してみてください。
障害のある()
除く
印刷( '取扱例外')
()へのhandle_exceptionは用を
#ignore_exception()

#8.5の所見禅のtry /除く外かのtry /最後に

のみ発行#8.6より少ない異常警告アラートが機能警告
インポートは警告を表す警告からの
印刷((警告「私はこれについては悪い感じが持ってきたの。」))のみ警告#に使用され、再生されませんオフ
プリント(「111」)

#8.7概要
#例外オブジェクト:異常な状態(例えば、エラー)は、例外オブジェクトによって表されます。例外の場合、治療のさまざまありますが、無視して、プログラムは終了します。
#例外をスロー:あなたは、例外をスローするraise文を使用することができます。この例外クラスのインスタンスまたはパラメータなどの異常が、あなたは、2つのパラメータ(例外やエラーメッセージ)を提供することができます。あなたはexcept節で昇給を呼び出すときに引数を指定しない場合、それは句キャプチャに例外を再発生させます。
#カスタム例外クラス:あなたは例外由来の異常により、カスタムを作成することができます。
#キャッチ例外:例外をキャッチするには、try文に句を除いて使用することができます。除く句では、すべての例外をキャッチする例外クラスを指定しない場合。あなたが複数の例外クラスを指定することができ、それらのタプルを置くことです。場合
位以外の2つのパラメータを提供するために、第2のパラメータは、例外オブジェクトに関連付けられます。異なる異常が異なる措置をとるよう声明を除いて同じのtry / except節では、複数が含まれていてもよいです。
#else節:except節を除き、しかし、あなたはまた、else節が例外を発生させることなく、メインのtryブロックで実行されて使用することができます。
#最後に:(なクリーンアップコードなど)のコードブロックに関係なく、例外が実行するかどうかの、あなたは句でのtry /最後に、そして最終的にコードブロックを使用することができるようにします。
#異常と機能:例外は(方法はについても同様である)例外は、ローカルコール機能に反映されます、関数内でスローされます。
#警告:警告が異常に類似しているが、(通常は)のみエラーメッセージを出力。あなたは警告のサブクラスである警告カテゴリを指定することができます。
'
ほとんどすべての例外例外クラスがそこから派生されたのは、
プロパティはAttributeErrorを参照またはトリガー障害に値を割り当てる
OSErrorのオペレーティングシステムは、サブカテゴリの数(例えば、ファイルを開くなど)指定のタスクを実行できないときにトリガー
はIndexError使用シーケンスを開始インデックスに存在しない、LookupErrorが用のサブクラス
キーマッピングを使用して開始剤はKeyError例外、サブクラスLookupErrorが存在しない
名(変数)NameErrorを見つけることができないイニシエータ
イニシエータコードが誤っている場合にSyntaxError
例外TypeErrorまたは内蔵操作間違って入力されたオブジェクトの機能を使用する場合に発生
組み込みアクションまたは機能とValueError開始そのようなオブジェクトに使用される:それは値の正しいタイプを含むが不適切
ZeroDivisionError除算又は第二パラメータを法であるときに開始ゼロ
「」 '

おすすめ

転載: www.cnblogs.com/fuyouqiang/p/11844641.html