gpt4 book ai didi

java - 抛出异常会改变它的状态吗?

转载 作者:搜寻专家 更新时间:2023-10-31 20:21:02 26 4
gpt4 key购买 nike

我已经进行了一些像这样的简单实验:

public static void main(String[] args) {
try {
NullPointerException n = new NullPointerException();
System.out.println(Lists.newArrayList(n.getStackTrace()));
n.printStackTrace();
System.out.println(Lists.newArrayList(n.getStackTrace()));
throw n;
} catch (NullPointerException e) {
e.printStackTrace();
System.out.println(Lists.newArrayList(e.getStackTrace()));
}
}

并得到这样的输出:

java.lang.NullPointerException
at MyTest.main(MyTest.java:231)
java.lang.NullPointerException
at MyTest.main(MyTest.java:231)
[MyTest.main(AbstractScannerTest.java:231)]
[MyTest.main(AbstractScannerTest.java:231)]
[MyTest.main(AbstractScannerTest.java:231)]

但是我想知道在抛出异常时是否对异常做了任何处理。这是一个主要的学术问题,尽管在某些情况下它可能是相关的,如果异常是 API 的一部分并且在提供给实现时可能会或可能不会被抛出。

最佳答案

不,Throwable 对象本身不会被throw 操作修改;它只是简单地向上传递调用堆栈,类似于方法的参数。 Throwable 通常设计为不可变对象(immutable对象)并且没有 setter,尽管有些支持修改堆栈跟踪以便 RPC 或类似框架可以确保包含适当的错误跟踪信息。也就是说,Throwable 是一个与任何其他对象一样的对象,您可以编写一个 Throwable 类,它具有要在 catch 中调用的 mutator 方法 block ,尽管这并不常见。

关于java - 抛出异常会改变它的状态吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17976349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com