Python:正确的异常提升

时间:2013-07-25 13:03:43

标签: python python-2.7

在Python中,如果不满足一组ifelif条件,则会到达并执行else语句。

开发人员如何通知代码中的这一点不应该如何,并提出哪种异常类型?

示例:

if condition1:
    # do something
elif condition2:
    # do something
else:
    raise ShouldVeNeverGotHereException

这是为了确保上述if条件中至少有一个实际评估为True。如果有一个更优雅的模式来实现我所描述的,请建议。

2 个答案:

答案 0 :(得分:7)

你永远不应该编写可能导致松散结束的代码。但假设您必须,可能提出的最佳类型的异常是ValueError

>>> foo = 3
>>> if foo == 1:
    pass
elif foo == 2:
    pass
else:
    raise ValueError('foo is unexpected value: %s' % foo)


Traceback (most recent call last):
  File "<pyshell#41>", line 6, in <module>
    raise ValueError('foo is unexpected value: %s' % foo)
ValueError: foo is unexpected value: 3

答案 1 :(得分:1)

您可以使用assert

if condition1:
    do_stuff()
elif condition2:
    do_stuff()
else:
    assert condition1 and condition2, "condition1 and condition2 is False. Do not continue" # Or something similar