我的工作场所规定不得使用异常(允许捕获)。如果我有这样的代码
def f1()
if bad_thing_happen():
raise Exception('bad stuff')
...
return something
我可以把它改成
def f1()
if bad_thing_happen():
return [-1, None]
...
return [0, something]
f1 调用者会是这样
def f1_caller():
code, result = f1(param1)
if code < 0:
return code
actual_work1()
# call f1 again
code, result = f1(param2)
if code < 0:
return code
actual_work2()
...
在 Python 中还有比这更优雅的方法吗?
最佳答案
python 中的异常是无法避免的,并且通常是解决问题的直接方法。此外,异常携带大量信息,可以帮助快速定位(通过堆栈跟踪)和识别问题(通过异常类或消息)。
想出这个一揽子政策的人肯定在考虑另一种语言(也许是 C++?),其中抛出异常是一种更昂贵的操作(如果您的代码在 20 年前的计算机上执行,将会降低性能)。
回答您的问题:另一种方法是返回错误代码。这意味着您将函数结果与错误处理混合在一起,这会引发(哈!)它自己的问题。但是,返回 None
通常是指示函数失败的一种非常合理的方式。
关于Python:不允许我引发异常。还有其他优雅的python方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3869326/