5:例外処理

1.異常

例外は、エラー信号生成プログラムはPythonで、(プログラムエラーが発生したときにプログラムがそれを処理しない場合は、例外が、それは、例外をスローも終了するプログラムを実行します)実行されている、誤トリガ以下の異常

1.1構文エラー:

構文エラーデモ
IF 
#の構文エラーのデモンストレーション2 
DEF テスト:
     パス
#の構文エラーのデモンストレーション3 
クラスFooの
     パス
#の構文エラーデモ4 
印刷(笑
コードの表示

Pythonインタプリタはあなたのコードの実行をさせている余裕はありません解決するために自分の時間を取り除くために、独自のコードを書きます

1.2論理エラー:

#1 はTypeError:int型は、反復ない
ため I  3 合格
とValueError 
NUM =入力(" >> "#の入力ハロー
INT(NUM) 

NameError 
AAA 

はIndexError 
L = [ ' エゴン'' AA ' ] 
Lの[ 3 ] 

KeyError例外 
DIC = { ' 名前'' エゴン' } 
DIC [ ' 年齢' ] 

AttributeError 
クラス fooは:パス
foo.x 

ZeroDivisionErrorを:計算が完了することができません 
。RES1を= 1/ 0 
RES2。= + 1 ' STR '
コードの表示

プログラムが起動して実行することはできませんが、トリガー・プログラムが異常コード生成の奥にクラッシュします一度、もはや行われます。

外の世界への対処:ファイルをロードし、ファイル名が存在しない、とユーザーを扱う、ユーザーがあなたのアカウントに異常発生の値を取ることはありません入り

2.例外処理

それがエラーに遭遇した場合に堅牢性とフォールトトレランスのプログラムを確実にするために、そのプログラムがクラッシュしない、我々は例外に対処する必要があります

2.1異常を予測することができます

と一緒に処分した場合にエラーが発生する前に

2.2予測不可能な異常

エラーの後加工:エラー状態が予測できない場合は、以外...試す使用する必要があります

プログラムは永遠に実行し続けることができるように例外を行った後、クラッシュしない発生しますが、例外が発生した後、カスタム・ロジックを実行し続け

2.3try ...除きます

あなたは非指定の例外を扱うことができない場合は1例外クラスは、特定の例外を処理するために使用することができます。
S1 = ' こんにちは' 
試し
    int型(S1)
を除く E ASはIndexError: 捕捉されない例外、直接与えられたプログラム
    印刷Eの

2は、多分岐 
S1 = ' こんにちは' 
試し
    int型(S1)を
除き、E ASはIndexError:
     印刷(E )
 を除くE AS KeyError例外:
     印刷(E)
 を除くE ASとValueError:
     印刷(E) 

3ユニバーサル例外exception。 
S1 = ' こんにちは' 
試し
    INT(S1)
を除くE AS例外:
     印刷(E) 

4多分岐異常と異常なユニバーサル4.1あなたが効果をしたい場合は、関係なく、私たちは捨て統一、またはそれらに対処するために同じコード・ロジックを使用して、異常が何でありますか、それを行うには太字で示し、十分に一つだけ例外があります。4.2あなたが別の例外のために、我々は別の処理ロジックをカスタマイズする必要がある、という効果にしたい場合は、それがマルチブランチを使用する必要があります。

5以降の例外マルチブランチであってもよい 
S1 = ' こんにちは' 
試し
    int型(S1)
を除くE ASはIndexError:
     印刷(E)
 を除くE AS KeyError例外:
     印刷(E)
 を除くE ASとValueError:
     印刷(E)
 を除く例外E AS:
     印刷(E)

6異常他人 
S1 = ' こんにちは' 
試し
    int型(S1)
を除いてはIndexError E AS:
     印刷(E)
 を除くKeyError例外E AS:
     印刷(E)
 を除くとValueError E AS:
     印刷(E)
E AS例外を除きます:
#の    印刷(E)
印刷トライコードブロック内には、私は例外が実行されていない最後に印刷は、モジュールが実行される異常かどうかにかかわらず、通常のクリーンアップが行わ

7アクティブトリガ異常な
試みを昇給の例外TypeError(' タイプのエラー' を除き、例外E AS:
     印刷(E) 

8カスタム例外。
クラスEgonException(BaseException):
     DEF  __init__ (セルフ、MSG):
        self.msg = MSG
     DEF  __str__ (自己):
         戻りセルフ.MSG 

試し昇給 EgonException(' タイプのエラー' を除くEgonException E AS:
     印刷(E) 

9アサート:条件主張
アサートを 1. 1 ==。  
アサート 1 == 2 10はtry..exceptまとめた 
1 :エラー処理と実際の作業は、分離
 2 :コード実装が簡単明確かつ複雑なタスク、整理しやすい;
 3:間違いなく、より安全に、ものではない、予期しないアプリケーションのクラッシュにいくつかのマイナーな過失。


コードの表示

3.使用します

一部の学生はとても良い、学校完成例外処理の後、強い良いが、私はそれがああ論理エラーではないと思うし、乾燥ウール、以外...試すに連結されている私のプログラムのために、各セクションをしたい、と思うかもしれああ、脳細胞===多くの地方「2Bの若者、より多くの喜び、

まず例外処理のロジックを除いて...してみてください、あなたのプログラムに添付することで、あなたの主な仕事は、そのようなことに加えて、よりに関連していない、あなたのコードが読みにくく原因になります

そして、これが唯一の予測不可能のエラー状態の場合には、紙の裏側の2bのロジックを処理し、あなたの例外ではない、除いて...試すために追加する必要があります

おすすめ

転載: www.cnblogs.com/gyxpy/p/11608256.html