首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AssertionError和assert

AssertionError和assert
EN

Stack Overflow用户
提问于 2015-11-28 11:25:03
回答 1查看 1.5K关注 0票数 2

我正在为OCP 7做准备,我在其中一本证书簿上遇到了这篇文章。

为了阻止您尝试将断言替换为异常,AssertionError不提供对生成异常的对象的访问。你得到的只有字符串信息。

我尝试了很多可能性来执行正在说的话,但是我发现在AssertionError上和其他人没有什么不同。

你能向我解释一下这句话的意思吗?

EN

回答 1

Stack Overflow用户

发布于 2015-11-28 11:41:08

文件中的常见问题assert关键字中可以找到解释:

为什么AssertionError不允许访问生成它的对象?同样,为什么不将一个任意对象从断言传递到AssertionError构造函数而不是一个详细消息呢? 对这些对象的访问将鼓励程序员尝试从断言失败中恢复,这违背了工具的目的。

考虑以下代码:

代码语言:javascript
复制
int i = 0;
assert i != 0 : "i must not be zero"

如果启用断言,这将引发一个AssertionError,并将消息初始化为"i must not be zero"。但所有这些错误都会包含。如果它包含更多的信息,它将鼓励开发人员通过捕获AssertionError来从错误中恢复。从理论上讲,仍然可以检查错误消息并尝试使用它来做一些事情,但是这样做实际上违背了每一个良好的实践。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33970748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档