私は簡単なチェックを提供する小さなPython関数を作成しました。パラメータn
は自然数ですか?この小切手はどのようにして一般的に達成できますか?自然数をチェックし、assertRaiseで例外を検証します。
これは私が作成したコードです:私は、Python 3.5を使用してい
def is_natural_number(n, print_err_msg=True):
try:
if not isinstance(n, int):
raise TypeError("Your input is not of integer type.")
if n < 1:
raise ValueError("Your integer is less than 1.")
except (TypeError, ValueError) as err:
result = False
if print_err_msg:
print("Error: {}".format(err))
else:
result = True
finally:
return result
。この関数が常にTrue
またはFalse
を返し、必要に応じて例外を処理するようにしたいと考えていました。
私はそれが
finally
ブロックにreturn
文を置くために、適切なのかどうかわからない:個人的に、私はこのコードは次のような理由から、良好であることを確信しません。常にTrue
またはFalse
のいずれかを返すので、コードは正常に機能します。しかし、私はこのようなfinally
を使用していくつかの望ましくない副作用を引き起こしたかどうかはわかりません。assertRaises
からunittest
を使用してTypeError
とValueError
を確認できませんでした。ただし、try
ブロックからTypeError
とValueError
を削除して、それらの例外を処理しないようにしてから、assertRaises
が成功しました。assertRaises
を使用して、例外がブロックブロック内のraise
まで発生した場合に例外が発生することを確認できますか?