我創建了一個小小的python函數,它提供了一個簡單的檢查:參數n
是一個自然數嗎?你將如何完成這項檢查?檢查自然數,通過assertRaise驗證異常
這是我創建的代碼:
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
我使用Python 3.5。我想確保此函數始終返回True
或False
,並在必要時處理異常。就個人而言,我不認爲這個代碼是不錯的,有以下原因:
我不知道它是否適合把
return
語句轉換成finally
塊。代碼工作正常,因爲它總是返回True
或False
。但是,我不確定是否通過使用finally
這樣造成了一些不良副作用。我無法驗證
TypeError
和ValueError
使用assertRaises
從unittest
。但是,assertRaises
在從try
塊中刪除TypeError
和ValueError
併成功處理這些異常後成功。我如何使用assertRaises
驗證在try
塊內通過raise
引發異常時是否會引發異常?