異常なキャプチャと処理
エラーとは
つまり、まだ実行されておらず、文法を分析したところ、現時点ではエラーである文法に問題があることがわかりました。
例外とは
要するに:コードが書かれた後、明らかな文法上のエラーはありません(現時点では、エディターはエラーがあることも、文法の解析中にエラーがあることも知りません)が、実行されるとエラーが発生します。これは、現時点では例外と呼ばれます。 。
警告とは
import warnings
def fxn():
warnings.warn("deprecated", DeprecationWarning)
例外への対処方法
例外処理フォームは次のとおりです。
try:
何か変わったことが起こるかもしれません
発生する可能性のある例外を除く:
例外の後にすべきこと
発生する可能性のある例外を除いて2:
例外が発生した後に行うこと2finally:
最後にすべきこと
たとえば、次のコード:
try:print(10/0)
except ZeroDivisionError:print("除数を0にすることはできません")
この時点で再度実行します。例外はありません。
通常の開発では、例外によるプログラムのクラッシュを回避するために、事前定義されたクリーンアップ操作も使用されます。たとえば、IO操作を実行する場合は、次を使用できます。
withopen("myfile.txt")as f:for line in f:print(line, end="")
このように、操作中に例外が発生すると、プログラムは自動的にファイルを閉じて、プログラム全体がクラッシュしないようにします。
カスタム例外と例外スロー
pythonには多くの組み込みの例外クラスが用意されていますが、通常の開発では、特定のビジネスに対して、例外をカスタマイズする必要がある場合があります。現時点ではどうすればよいですか。
例外のカスタマイズは、Exceptionクラスをカスタム継承することで実現できます。
classMyException(Exception):
def __init__(self, parameter):
err ='不正なエントリ{0}、分母を0にすることはできません'.format(parameter)
Exception.__init__(self, err)
self.parameter = parameter
コードで特別なビジネス状況に遭遇し、呼び出し元にカスタム例外をスローする必要がある場合は、raiseキーワードを使用できます。
from chapter12.my_exception import MyException
def my_fun(x):if x ==0:
raise MyException(x)return12/x
print(my_fun(-12))
例外をキャッチした後、例外を直接スローすることもできます。この場合、raiseキーワードを直接使用できます。
def my_func():try:print(10/0)
except ZeroDivisionError:print("除数を0にすることはできません")
# キャッチされた例外をここに直接スローします
raise
単体テスト
ユニットテストとは
ユニットテストのメリットと「デメリット」
pythonでユニットテストを書く方法
1、 新しいpythonファイルを作成し、特定のビジネスコードを記述します
classMyTest():
def my_add(self, a, b):return a + b
**2、 クラス名を右クリックして、[移動] ==》テストを選択するか、直接ctrl + shift + t **を選択します
3、 対応するモジュール名とテストクラス名を入力し、[OK]をクリックすると、pycharmがテストモジュールとクラスを自動的に作成するのに役立ちます
4、 テストコードを記述し、ユニットテストを実行します
import unittest
from unittest import TestCase
from test import MyTest
classTestMyTest(TestCase):
def test_add(self):
s=MyTest()
self.assertEqual(s.my_add(1,5),6)if __name__ =="__main__":
unittest.main()
上記は、Pythonエラー処理メソッドの詳細な内容です。Pythonエラー処理の詳細については、ZaLou.Cnの他の関連記事に注意してください。
Recommended Posts