Python学習ノート - エラー処理

黄舟
黄舟オリジナル
2017-01-17 14:17:591084ブラウズ

プログラム内のエラーを処理するにはさまざまな方法があります。その 1 つは、エラー コードに同意し、返されたエラー コードを使用してエラーが発生したかどうか、およびエラーの原因を判断することです。


しかし、これを行うと正しい戻り値とエラーコードが混在しやすくなり、それらを区別するために多くのコードを記述する必要があり、非常に不便です。さらに、何か問題が発生した場合は、問題を処理できる別のレベルがあることがわかるまで、一度に 1 レベルずつ次のレベルに報告する必要があります。


より成熟したアプローチは、...最終的に...この一連のエラー処理メカニズムを除いて試してみることです。このメカニズムは、通常の戻り値には影響しません。同時に、一度に 1 レベルを手動でレポートする必要はありませんが、必要なキャプチャと処理は 1 レベルだけです。


コード:

try:
print open("Demo.py", 'r')
n = 1 / 0
except ZeroDivisionError, e:
print "zeroDivisionError", e
except ValueError, e:
print "ValueError", e
else:
print "No Error catched"
finally:
print "finally"

エラー処理を使用する際に注意すべき点がいくつかあります:


複数の例外を記述して複数の例外をキャッチできます


親クラスの例外は、 subclass の場合、キャッチされた例外は他の例外に渡されません。


例外なくelseを使用して状況を処理できます


finallyはエラーの有無に関係なく実行されます。


組み込み例外の種類

Pythonにおける組み込み例外の継承関係(2. の例外)ビルドインの例外で必要な例外が見つからない場合にのみ、例外をカスタマイズします。

カスタム例外をスローするには、次の構文を使用します:

The class hierarchy for built-in exceptions is:
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
+-- StopIteration
+-- StandardError
| +-- BufferError
| +-- ArithmeticError
| | +-- FloatingPointError
| | +-- OverflowError
| | +-- ZeroDivisionError
| +-- AssertionError
| +-- AttributeError
| +-- EnvironmentError
| | +-- IOError
| | +-- OSError
| | +-- WindowsError (Windows)
| | +-- VMSError (VMS)
| +-- EOFError
| +-- ImportError
| +-- LookupError
| | +-- IndexError
| | +-- KeyError
| +-- MemoryError
| +-- NameError
| | +-- UnboundLocalError
| +-- ReferenceError
| +-- RuntimeError
| | +-- NotImplementedError
| +-- SyntaxError
| | +-- IndentationError
| | +-- TabError
| +-- SystemError
| +-- TypeError
| +-- ValueError
| +-- UnicodeError
| +-- UnicodeDecodeError
| +-- UnicodeEncodeError
| +-- UnicodeTranslateError
+-- Warning
+-- DeprecationWarning
+-- PendingDeprecationWarning
+-- RuntimeWarning
+-- SyntaxWarning
+-- UserWarning
+-- FutureWarning
+-- ImportWarning
+-- UnicodeWarning
+-- BytesWarning

テスト コードでは、例外を処理するときに例外を直接出力できます。ただし、実際の実稼働コードでログを直接出力することは適切ではない場合があります。 logging.Exception(msg) を使用すると、簡単な設定でエラーをログに出力できます。 Python の組み込みロギング モジュールの正しい使用方法は、別の記事で紹介します。

上記は Python 学習メモ - エラー処理の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。