python:使用assert引发不同的错误类型

时间:2017-07-17 18:50:48

标签: python exception assert

使用assert,您可以轻松测试条件而无需if/raise

assert condition, msg

相同
if not condition:
  raise AssertionError(msg)

我的问题是,是否可以使用assert来提升不同类型的Errors。例如,如果您缺少特定的环境变量,那么返回EnvironmentError会很有用。这可以使用try/catch或类似if/raise手动完成:

if not variable in os.environ:
  raise EnvironmentError("%s is missing!" % variable)

try:
  assert variable in os.environ
except:
  raise EnvironmentError("%s is missing!" % variable)

但是我想知道是否有一种我无法找到的某种类型的快捷方式,或者是否有一些解决方法可以让多个except向上叠加。

1 个答案:

答案 0 :(得分:1)

内置assert是一项调试功能,使用范围很窄,如果您运行python -O,甚至可以从代码中删除。

如果您想根据具有单线表达式的条件引发各种异常,请编写函数!

assert_env(variable in os.environ)

甚至

assert_env_var(variable)  # knows what to check

如果你想要一个超通用/退化的情况,考虑一个接受所有作为参数的函数(可能有一些默认值):

my_assert(foo == bar, FooException, 'foo was not equal to bar')