【发布时间】:2019-12-03 23:24:00
【问题描述】:
据我在 Eiffel 中的理解,如果语句返回 False,则以下不带断言的代码将失败
check
i_m_alive: i.alive
then
do_nothing
end
也许我用得不好,但有时我想检查它而不做任何其他事情。
- 这个语句有和没有断言的确切行为是什么?
- 我应该使用
raise和if语句吗? - 我有时会尝试向
check ... then添加一个else 语句,但我确定它没有实现是有原因的,可能是因为没有替代方案,因为如果语句返回True,则会引发异常
特别是在 EWF(Eiffel Web 框架)上,我看到报告错误并处理它的唯一方法是写入日志或将详细信息发送给引荐来源网址,其中包含一些有时不足以发送给用户的详细信息。向管理员发送电子邮件也是一种可能......我有点迷茫,但知道 raise 和 Exception 机制不是 Eiffel 建议的处理错误的方式。
我将进一步深入了解available documentation 的相关内容,但作为我的 TL;DR 将很乐意对此有更简洁的答案或更多观点。
【问题讨论】:
-
我建议将关于
rescue和堆栈跟踪的最后一个问题移至另一篇帖子,因为它与原始问题没有直接关系,并且违反了只问一个问题而不是多个问题的规则。 -
@AlexanderKogtenkov Thx,实际上我发现了你写的更多信息,并认为我混合了太多东西,无法在正确的情况下做正确的事情。我认为我的软件必须按照您在以下链接中的建议使用更多的错误控制,而不是检查、重试、引发。 stackoverflow.com/questions/26956743/…
-
我会更深入地研究我的代码,一旦我的头脑清楚,使用异常的坏习惯和在埃菲尔似乎仍未修复的错误中,我会提出更多问题编译器不能让我用断言编译最终可执行文件以进行测试和生产让我感到困惑
标签: eiffel