异常对象的printStackTTrace()方法用于打印异常的跟踪栈信息,根据printStackTTrace()方法输出的结果,开发者可以找到异常的源头,并跟踪到异常一路触发的过程。
下面测试printStackTrace的例子:
class SelfException extends RuntimeException
{
SelfException(){}
SelfException(String msg)
{
super(msg);
}
}
public class printStackTraceTest
{
public static void main(String[] args)
{
firstMed();
}
public static void firstMed()
{
secondMed();
}
public static void secondMed()
{
thirdMed();
}
public static void thirdMed()
{
throw new SelfException("自定义异常信息");
}
}
运行上面的程序可以看出如下图所示的结果:
从图可以看出异常从thirdMed方法开始触发,传到secondMed方法,再传到firstMed方法,最后传到main方法,在main方法终止,这个过程就是Java的异常跟踪栈。
面向对象的应用程序运行时,经常会发生椅子额方法调用,从而形成方法调用栈,异常的传播则相反:只要异常没有被完全捕获(包括异常没有被捕获,或异常被处理后抛出新的异常),异常从异常发生的方法开始向外传播,首先传给方法的调用者,该方法调用者再次传给其调用者,直至传到main方法,如果main方法依然没有处理该异常,JVM会终止该程序,并打印跟踪栈信息。