ewo*_*wok 6 python assert exception
使用assert,您可以轻松测试条件而无需if/raise:
assert condition, msg
Run Code Online (Sandbox Code Playgroud)
是相同的
if not condition:
raise AssertionError(msg)
Run Code Online (Sandbox Code Playgroud)
我的问题是是否可以使用assert来引发不同类型的Errors. 例如,如果您缺少一个特定的环境变量,返回一个EnvironmentError. 这可以像以前一样使用 atry/catch或类似工具手动完成if/raise:
if not variable in os.environ:
raise EnvironmentError("%s is missing!" % variable)
Run Code Online (Sandbox Code Playgroud)
或者
try:
assert variable in os.environ
except:
raise EnvironmentError("%s is missing!" % variable)
Run Code Online (Sandbox Code Playgroud)
但是我想知道是否有某种类型的快捷方式我无法找到,或者是否有一些解决方法可以except在堆栈中放置多个s。
内置assert是一个调试功能,它的用途很窄,如果运行python -O.
如果您想根据单行表达式的条件引发各种异常,请编写一个函数!
assert_env(variable in os.environ)
Run Code Online (Sandbox Code Playgroud)
甚至
assert_env_var(variable) # knows what to check
Run Code Online (Sandbox Code Playgroud)
如果您想要超通用/简并的情况,请考虑一个接受所有内容作为参数的函数(可能带有一些默认值):
my_assert(foo == bar, FooException, 'foo was not equal to bar')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1086 次 |
| 最近记录: |