在单元测试中,捕获异常和抛出异常是两种处理错误的方式。下面是一个示例,展示了如何使用这两种方式来处理异常。
假设我们有一个函数,接受两个整数作为参数,并返回它们的商。当除数为0时,会抛出一个ZeroDivisionError
异常。
使用捕获异常的方法:
def divide(a, b):
try:
result = a / b
return result
except ZeroDivisionError:
return None
def test_divide():
assert divide(10, 2) == 5 # 正常情况
assert divide(5, 0) is None # 除数为0时,捕获异常并返回None
test_divide()
使用抛出异常的方法:
def divide(a, b):
if b == 0:
raise ZeroDivisionError("除数不能为0")
result = a / b
return result
def test_divide():
assert divide(10, 2) == 5 # 正常情况
try:
divide(5, 0) # 除数为0时,抛出异常
assert False # 如果没有抛出异常,测试应该失败
except ZeroDivisionError:
pass # 捕获到异常,测试通过
test_divide()
这两种方式各有优劣。捕获异常的方法可以在函数内部处理错误,避免异常导致程序终止。而抛出异常的方法可以明确地指示错误,并且使得测试更加精确,因为我们可以检查是否抛出了预期的异常。选择使用哪种方式取决于具体的需求和情况。
上一篇:捕获异常消息