Pythonの例外処理レコード

来への参照:PythonCookbook

まず第一に、あなたは、すべての異常なものクラスを知っています。

すべての異なる異常を処理するコードの単一のブロックならば、彼らはタプルの一つに分類することができます。

urllib.error輸入URLErrorのから

試してみてください。
    object.get_url(URL)
(URLError、とValueError、SocketTimeout)を除い:
    object.remove_url(URL)

 キャプチャこのエラー元祖(URLError、とValueError、SocketTimeout)がobject.remove_url実行されます(URL)

 

シングルは異なるアプローチを取る場合、それは除いて別々に配置することができます

試してみてください。
    object.get_url(URL)
(URLError、とValueError)を除いた:
    object.remove_url(URL)
SocketTimeout除い:
    object.other_do(URL)

 

このような例外のために、あなたは、基本クラスを指定することで、すべての例外をキャッチすることができ、継承階層に分類され、多くがあります。

試し:
    F =オープン( 'A.TXT')
(FileNotFoundError、PermissionError)を除い:
    ... 

試し:
    F =オープン( 'A.TXT')
:OSErrorのを除いて
    ... 
サブクラス、次の調査中#
印刷(OSErrorのサブクラス.__ __())
を印刷() 
ビューは、テーブル継承された プリント(FileNotFoundError .__ mro__)

 

[<クラス'ConnectionError'>、<クラスのBlockingIOError '>、<クラスのChildProcessError'>、<クラスのFileExistsError '>、
<クラスのFileNotFoundError'>、<クラスのIsADirectoryError '>、<クラスのNotADirectoryError'> <クラスのInterruptedError '>、
<クラスのPermissionError'>、<クラスのProcessLookupError '>、<クラスのTimeoutError'>、<クラスのio.UnsupportedOperation '>、<クラスのsignal.ItimerError'>] (<クラスのFileNotFoundError '>、<クラスのOSErrorの'>、<クラスの例外'>、<クラスのBaseException'>、<クラスのオブジェクト'>)

 この本は、厳格なローカルなものではありません、エラーの種類はますます明白OSErrorのは含まれています。

 

我々Eとしても、eは間違ったインスタンスに捕獲されたことができ、例えば、その後、彼らはあなたにもタイプ(e)の正確な捕捉を容易にする方法により、電子の種類を表示することができ、属性の束を持っている必要があります。

前記エラープロパティは、エラーコードをキャプチャすることができます。

以下は実行されませんを除いて、適切な例外キャプチャダウンを実行する点が異なります。

試し:
    F =オープン( 'A.TXT')
OSErrorのAS Eを除く:
   印刷(DIR(E)) を印刷( 'OSErrorの') は確かにこれを実行していない、それはFileNotFoundError OSErrorの親クラスである必要があり、それはそれが含まれていますすべての例外がキャッチされ FileNotFoundError除い: 印刷(「FileNotFoundError」)

次OSErrorの上のオブジェクトの属性で、

[ '__cause__'、 '__class__'、 '__context__'、 '__delattr__'、 '__dict__'、
'__ DIR__'、 '__doc__'、 '__eq__'、 '__format__'、 '__ge__'、 '__getattribute__'、 '__gt__'、
' __hash__」、 '__init__'、 '__init_subclass__'、 '__le__'、 '__lt__'、 '__ne__'、 '__new__'、
'__reduce__'、 '__reduce_ex__'、 '__repr__'、 '__setattr__'、 '__setstate__'、 '__sizeof__' 、 '__str__'、
'__subclasshook__'、 '__suppress_context__'、 '__traceback__'、 '引数'、 'characters_written'、 'エラー番号'、 'ファイル名'、 'ファイル名2'、 'にstrerror'、 'with_traceback']

 

すべての例外をキャッチ

試してみてください
    ... 
十分なこと#一般的なエラー
:例外を除き、AS Eが
    ... 
#これは間違っている父である
BaseException AS Eを除きます:
    ...

 SystemExitを、KeyboardInterrupt、およびGeneratorExitに加えて、例外をキャプチャすることができます

おすすめ

転載: www.cnblogs.com/sidianok/p/12229828.html