考点:
- 异常处理(try-except-else-finally)
- 自定义异常
- 断言(assert)
题目描述: 编写一个Python函数,该函数执行两个整数的除法。函数应接受两个参数:被除数和除数。如果除数为0,则抛出自定义异常 DivisionByZeroError
。使用断言来确保输入参数都是整数。如果除法成功,则返回结果;如果发生任何异常,则捕获并打印适当的错误消息。
作答区:
# 请在此处编写你的代码
答案
class DivisionByZeroError(Exception):
"""自定义异常,用于除数为零的情况"""
pass
def safe_divide(dividend, divisor):
assert isinstance(dividend, int), "The dividend must be an integer."
assert isinstance(divisor, int), "The divisor must be an integer."
try:
result = dividend / divisor
except DivisionByZeroError as e:
print(f"Error: {e}")
except AssertionError as e:
print(f"AssertionError: {e}")
else:
return result
finally:
print("Execution of the safe_divide function is complete.")
# 测试代码
try:
print(safe_divide(10, 2)) # 应该正常打印 5.0
print(safe_divide(10, 0)) # 应该抛出 DivisionByZeroError 并打印错误信息
except DivisionByZeroError:
print("Caught a DivisionByZeroError.")
www.jhlxrcw.com
www.jhdyrcw.com
www.jhykrcw.com
www.nbfhrcw.com
www.nbxsx.com
try:
print(safe_divide(10, 'a')) # 应该抛出 AssertionError 并打印错误信息
except AssertionError:
print("Caught an AssertionError.")