哪个是更好的解决方案? (异常处理)
Which is a better solution? (exception handling)
我应该把异常处理放在哪里?哪一个是代码的最佳解决方案:
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.')
第一种方法意味着 spam()
函数的任何用户在尝试使用结果之前都需要检查它 returns 是一个数字还是 None
(除非他们都'正在做的是打印结果,如您的示例所示)。
第二种方法意味着所有用户都必须在调用周围添加 try/except
。
无论哪种方式,调用者都必须做一些事情来处理除零错误。
第二种方法更灵活,因为调用者可以自定义他们处理异常的方式。第一种方法总是打印相同的消息 returns None
,调用者对此无能为力。
我应该把异常处理放在哪里?哪一个是代码的最佳解决方案:
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.')
第一种方法意味着 spam()
函数的任何用户在尝试使用结果之前都需要检查它 returns 是一个数字还是 None
(除非他们都'正在做的是打印结果,如您的示例所示)。
第二种方法意味着所有用户都必须在调用周围添加 try/except
。
无论哪种方式,调用者都必须做一些事情来处理除零错误。
第二种方法更灵活,因为调用者可以自定义他们处理异常的方式。第一种方法总是打印相同的消息 returns None
,调用者对此无能为力。