【发布时间】:2019-10-01 08:29:29
【问题描述】:
我应该把异常处理放在哪里?哪一个是代码的最佳解决方案:
def spam(divideBy):
try:
return 42 / divideBy
except ZeroDivisionError:
print('Error: Invalid argument.')
print(spam(2))
print(spam(12))
print(spam(0))
print(spam(1))
或
def spam(divideBy):
return 42 / divideBy
try:
print(spam(2))
print(spam(12))
print(spam(0))
print(spam(1))
except ZeroDivisionError:
print('Error: Invalid argument.')
【问题讨论】:
-
处理任何可以在函数上下文中使用第一种方法完全处理的异常。其余的异常应该使用方法 2 抛出给调用者。取决于上下文。
-
我更喜欢你的第一个代码,但是按照你的代码风格,我会返回“错误:无效参数”)而不是打印,导致你在 print(spam(1)) 中调用函数
-
什么意思?我遵循缩进规则