java – 为什么我不能比较Exception对象的相等性?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 为什么我不能比较Exception对象的相等性?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1035字,纯文字阅读大概需要2分钟。
内容图文
![java – 为什么我不能比较Exception对象的相等性?](/upload/InfoBanner/zyjiaocheng/725/bf1cedb5e04e448aaa9166725b53a90a.jpg)
SSCCE:
import java.util.Objects;
public class FooMain {
private static Exception foo() {
try {
throw new Exception();
} catch (Exception e) {
return e;
}
}
public static void main(String args[]) {
final int N = 2;
Exception es[] = new Exception[N];
for (int i = 0 ; i < N ; i++)
es[i] = foo();
System.out.printf("Exceptions are equal? %b\n", Objects.equals(es[0], es[1]));
for (int i = 0 ; i < N ; i++) {
System.out.printf("follows exception %d:\n", i);
es[i].printStackTrace();
}
}
}
以上输出:
[java] Exceptions are equal? false
[java] follows exception 0:
[java] follows exception 1:
[java] java.lang.Exception
[java] at FooMain.foo(FooMain.java:6)
[java] at FooMain.main(FooMain.java:17)
[java] java.lang.Exception
[java] at FooMain.foo(FooMain.java:6)
[java] at FooMain.main(FooMain.java:17)
解决方法:
异常类从Object继承其equals()方法,并且不会覆盖它.您每次都创建新的Exception实例,它们是内存中的不同对象.即使它们的堆栈跟踪相同,它们在内存中仍然具有不同的对象分配,并且使用默认的equals()方法,它们是不同的.
但是,您可以定义自定义异常类并重写equals().
内容总结
以上是互联网集市为您收集整理的java – 为什么我不能比较Exception对象的相等性?全部内容,希望文章能够帮你解决java – 为什么我不能比较Exception对象的相等性?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。