gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:45:59 25 4
gpt4 key购买 nike

使用 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 进入堆栈.

最佳答案

内置的 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')

关于python:使用断言引发不同的错误类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45151569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com