我做了一些像这样的简单实验:
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的一部分,并且在提供给实现时可能会或可能不会被抛出,则在某些情况下它可能是相关的.