【发布时间】:2011-04-21 14:59:30
【问题描述】:
我的工作场所规定了不使用异常的规则(允许捕获)。如果我有这样的代码
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 中还有比这更优雅的方法吗?
【问题讨论】:
-
告诉你的工作单位我讨厌他们。就优雅的方式而言,那将是例外......你所做的很好(它很像 c 错误代码,只是更好),但我会返回一个元组而不是一个列表。这样就可以说成功了,result = f1(param)
-
毫无例外地编写 C++ 代码是有道理的,但没有例外地编写 Python 代码是一派胡言。异常绝对是 Python 的基础。我强烈建议找到最近的塑料球棒,并尽可能多地用它打击你破坏性无能的老板。
-
我和格伦一起做这个。不过,高尔夫球杆更好,同样的力量适用于较小的区域。
-
...或 Dice.com/careers.stackoverflow.com/Moster 等...您的职业生涯刚刚发生了令人讨厌的转变。跳船。负责人显然是穴居人。
-
你只有一个强制的限制,还是伴随着一些理智的理由?如果有原因,它们会很好地补充您的问题。 “为什么?”是一个非常明智的禅宗问题,会引发一种特定的心态。