微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Java异常的catch块中会发现一个断言错误?

码:-
try {
    Assert.assertEquals("1","2");
} catch (Exception e) {
    System.out.println("I am in error block");
}

如果assert语句失败,我想捕获catch块中的错误.我正在尝试使用上述代码,而不是发生.

在Java异常的catch块中会被断言错误捕获吗?

解决方法

你几乎回答了你自己的问题.由于它是一个错误(或者更具体地说,它扩展了java.lang.Error),你的catch块不会捕获Assert抛出Assert引发的AssertionError. See the docs了解更多信息.您的catch块只捕获延伸 java.lang.Exception的Throwable对象

如果你真的想抓住它 – 你需要使用

catch (AssertionError e) {
...

然而,由于othersmentioned,这是使用断言的一种非常不寻常的方法 – 通常应该通过,如果它们失败,那么您想要执行程序是非常不寻常的.这就是为什么失败会引发错误而不是异常.您可以在this question中阅读更多关于(不)捕捉错误的信息.

你确定你不只是想要一个测试 – if(variableName ==“1”)?

注意,如果您正在测试单元测试帮助程序代码,就像匹配器一样,捕获AssertionError可能是有意义的.

原文地址:https://www.jb51.cc/java/123025.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐