python - 哪个是更好的解决方案?(异常处理)
问题描述
我应该把异常处理放在哪里?哪一个是代码的最佳解决方案:
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()
函数的任何用户都需要检查它是否返回一个数字或None
在他们尝试使用结果之前(除非他们所做的只是打印结果,如您的示例所示)。
第二种方法意味着所有用户都必须try/except
在调用周围添加。
无论哪种方式,调用者都必须做一些事情来处理零除法错误。
第二种方法更灵活,因为调用者可以自定义他们处理异常的方式。第一种方法总是打印相同的消息并返回None
,调用者对此无能为力。
推荐阅读
- node.js - Firebase Functions - https onRequest "HTTP Error: 400, The request has errors"
- regex - 无效表达式:图像中的正则表达式标志 p 无效
- macos - 如何在 MacOS 上只安装 Docker 客户端?
- javascript - 为什么谷歌地图在网站上不起作用?
- regex - 正则表达式 + vee 验证
- ios - 在 UITableView 单元格上快速求和值
- angular - 如何获取兄弟元素的属性
- html - 如何从角度6中的数组中获取上一个最接近的数字
- forms - 带有 EntityType 下拉值的引导标签输入 (Symfony)
- assembly - 一个地址有多少字节?