为啥“引发错误”有效,而“断言”无效?
Posted
技术标签:
【中文标题】为啥“引发错误”有效,而“断言”无效?【英文标题】:Why does 'raised Error' work, but 'assert' doesn't?为什么“引发错误”有效,而“断言”无效? 【发布时间】:2019-06-10 12:38:48 【问题描述】:我使用assert和引发ValuError有区别,为什么?
以下代码,只在我使用raise ValueError
时停止我的脚本,assert
不起作用。
assert (len(dictA) != len(dictB)), 'Your have an .... error'
if len(dictA) != len(dictB):
raise ValueError('Your have an ... error')
【问题讨论】:
另请注意,这不是断言的最佳实践用法,请参见例如***.com/a/945135/3001761 【参考方案1】:你需要使用
assert (len(dictA) == len(dictB))
条件评估为 False 时引发错误。
【讨论】:
谢谢费利佩。你介意解释一下在这种情况下哪个(assert 或 valueerror)更好用吗? 取决于您的用例。检查这个问题的接受答案***.com/questions/40182944/…以上是关于为啥“引发错误”有效,而“断言”无效?的主要内容,如果未能解决你的问题,请参考以下文章
查询在 mysql 工作台中有效,但在 php 中无效,不知道为啥
在 PHP 中,为啥“or die()”有效,而“or return”无效?
当使用带有 AVX-512 加载和存储的屏蔽寄存器时,是不是会因对屏蔽元素的无效访问而引发错误?