-
使用是否存在性能或代码维护问题assert
作为标准代码的一部分而不是仅将其用于调试目的?
Is
assert x >= 0, 'x is less than zero'
比更好或更差
if x < 0:
raise Exception('x is less than zero')
-
另外,有没有办法设置业务规则,例如if x < 0 raise error
总是在没有try/except/finally
所以,如果在整个代码中的任何时候x
小于 0 会引发错误,就像您设置的那样assert x < 0
在函数的开始处,函数内的任何位置x
小于 0 会引发异常吗?
断言应用于测试条件永远不应该发生。目的是在程序状态损坏的情况下尽早崩溃。
异常应该用于可能发生的错误,并且你几乎应该总是创建自己的异常类.
例如,如果您正在编写一个函数来从配置文件中读取数据dict
,文件中的格式不正确应该会引发ConfigurationSyntaxError
,虽然你可以assert
你不会回来None
.
在你的例子中,如果x
是通过用户界面或外部源设置的值,最好有例外。
If x
仅由您自己的代码在同一程序中设置,请使用断言。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)