pythonにおける関数体内部の異常処理(二)
4768 ワード
前の文章を通じて、私たちはすでにどのように異常を捕獲するかを知っていて、および関数の中で異常の処理メカニズムの話は多くありません.それでは、関数が値を返すことができると思って、また異常を投げ出してどうしますか?これはraiseキーワードが必要ですコードを見てみましょう
このコードは関数の中でelseの中でreturnがないことを発見することができて、raiseだけが投げた異常は実はraiseが関数の中で特別な作用で、それはreturnに相当して、そしてreturnの値は異常で、あなたはこのように関数の体内でtryを使うことができて、exceptは異常を捉えて、手動で異常状態を正常な状態に調整して、その関数は正常に実行して、return値関数体の内部でraiseを使って異常を投げ出す必要があります.手動で正常状態を異常状態に調整するのです.その関数は正常に実行されず、直接エラーが報告され、return値は必要ありません.
これによりunittestテストフレームワークでは、結果を正常にしたい場合はtryのassert異常を正常に投げ出し、raiseで異常を投げ出すことができます.
pythonは私たちが関数体の内部で異常処理を行うことを奨励しています.異常を使ってエラーフロー処理を行うのがpythonicに合っているので、pythonプログラマーの自分のコードに対する理解度を体現しています.どこで異常処理を行うかは、自分のコードに対する自信度を表しています.だから、皆さんは自分のコードの中で異常処理を多く使用しましょう.
def calculate(a):
"""
:param a:
:return: float
"""
if str(a).replace(".","",1).isdigit() :
return float(a)
else:
NumError = Exception(" ")
raise NumError
try:
price = input(" : ")
price = calculate(price)
weight = input(" : ")
weight = calculate(weight)
except Exception as err:
print(" , :{}, ".format(err))
else:
result = price * weight
print(" :{}".format(result))
このコードは関数の中でelseの中でreturnがないことを発見することができて、raiseだけが投げた異常は実はraiseが関数の中で特別な作用で、それはreturnに相当して、そしてreturnの値は異常で、あなたはこのように関数の体内でtryを使うことができて、exceptは異常を捉えて、手動で異常状態を正常な状態に調整して、その関数は正常に実行して、return値関数体の内部でraiseを使って異常を投げ出す必要があります.手動で正常状態を異常状態に調整するのです.その関数は正常に実行されず、直接エラーが報告され、return値は必要ありません.
これによりunittestテストフレームワークでは、結果を正常にしたい場合はtryのassert異常を正常に投げ出し、raiseで異常を投げ出すことができます.
def test_02(self):
try:
self.assertEqual(1,2)
except AssertionError as e:
raise e
pythonは私たちが関数体の内部で異常処理を行うことを奨励しています.異常を使ってエラーフロー処理を行うのがpythonicに合っているので、pythonプログラマーの自分のコードに対する理解度を体現しています.どこで異常処理を行うかは、自分のコードに対する自信度を表しています.だから、皆さんは自分のコードの中で異常処理を多く使用しましょう.