13
|
R. Martinho Fernandes · 技术社区 · 15 年前 |
![]() |
1
20
堆栈跟踪是在实例化异常时创建的,而不是在引发异常时创建的。这是 Java Language Specification
我不知道 为什么? 他们这样做,但是如果规范定义了它,那么它至少在所有的Java虚拟机上都是一致的。
但是,您可以通过调用
还要注意,您应该使用
|
![]() |
2
10
异常的StackTrace将在异常的创建时填写。否则就不可能 捕获异常,处理并重新引发 . 原来的stacktrace会丢失。
如果你想强制这样做,你必须打电话
|
![]() |
3
1
因为您没有要求重写堆栈跟踪。它是在您用设置方法创建它时设置的,并且您从未做过任何更改。 异常类不给您任何机会来设置方法名;它是不可变的。所以我不知道在哪里可以重新设置方法名,除非你想求助于像反射这样令人发指的东西。 您的@test注释没有告诉我您是使用junit还是testng,因为我看不到静态导入,但是在这两种情况下,您都可以运行一个测试,以查看在@test注释中使用“expected”成员是否引发了特定的异常。 |
![]() |
4
1
您不希望抛出异常来更改堆栈跟踪,或者不能安全地重新抛出异常。
|
![]() |
5
0
异常中的堆栈跟踪与“new”操作相对应,而不是其他操作。 |
![]() |
6
0
我认为假设是,除非您正在抛出异常,否则您不会实例化异常,那么为什么要付出代价来获取两次堆栈跟踪呢? 在抛出堆栈跟踪时很难重新创建它,因为这只是将对象发送出去。 异常应该在抛出之前完全设置,因此实例化的一部分是获取堆栈跟踪。 更新:
你可以打电话
|
|
user29759326 · 如何返回递归函数中的最后一个值? 3 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 3 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 3 月前 |
![]() |
rudraraj · java中未声明最终变量 4 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 4 月前 |