Java PrintStackTrace always points causing line number to outermost try, is this expected behavior?
本问题已经有最佳答案,请猛点这里访问。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public class ThrowDemo { public static void catchAndThrowNullPointerException() { try { throw new NullPointerException(); // Line Number 7 } catch(NullPointerException npe) { System.out.println("NPE thrown"); try { throw npe; } catch(Exception ex) { System.out.println("Exception thrown inside nested try."); throw ex; // Line 16 } } } public static void main(String args[]) { catchAndThrowNullPointerException(); } } |
运行时,提供以下输出:
1 2 3 4 5 | NPE thrown Exception thrown inside nested try. Exception in thread"main" java.lang.NullPointerException at exception.handling.ThrowDemo.catchAndThrowNullPointerException(ThrowDemo.java:7) at exception.handling.ThrowDemo.main(ThrowDemo.java:22) |
这是一个预期的行为吗?如果是这样,为什么实际的第16行会导致异常被抛出到堆栈跟踪中没有包含的主函数中?产生这种怀疑的原因是,如果第16行被注释,那么输出中就没有打印stacktrace。
事先谢谢。
EDCOX1(0)是为Java类添加更多的方法(或行为)。
EDCOX1 1Ω不是Java中的一个有效代码,因为不能通过实现另一个接口来创建接口。在实现接口时,需要在所有声明的方法中编写相关的代码。一旦在方法中编写代码,就不能再将其命名为接口,因为接口只包含方法签名。