• 异常跟踪栈


    一 异常跟踪栈简介
    异常对象的printStackTrace方法用于打印异常的跟踪栈信息,根据printStackTrace方法的输出结果,我们可以找到异常的源头,并跟踪到异常一路触发的过程。

    二 main方法中异常跟踪栈的应用
    1 代码示例

    class SelfException extends RuntimeException
    {
    	SelfException(){}
    	SelfException(String msg)
    	{
    		super(msg);
    	}
    }
    public class PrintStackTraceTest
    {
    	public static void main(String[] args)
    	{
    		firstMethod();
    	}
    	public static void firstMethod()
    	{
    		secondMethod();
    	}
    	public static void secondMethod()
    	{
    		thirdMethod();
    	}
    	public static void thirdMethod()
    	{
    		throw new SelfException("自定义异常信息");
    	}
    }

    2 运行结果
    Exception in thread "main" SelfException: 自定义异常信息
     at PrintStackTraceTest.thirdMethod(PrintStackTraceTest.java:26)
     at PrintStackTraceTest.secondMethod(PrintStackTraceTest.java:22)
     at PrintStackTraceTest.firstMethod(PrintStackTraceTest.java:18)
     at PrintStackTraceTest.main(PrintStackTraceTest.java:14)
    3 结果分析
    只要异常没有被完全捕获,异常从发生异常的方法逐渐向外传播,首先传给该方法的调用者,该方法调用者再次创给其调用者……直至最后传到 main方法,如果main方法依然没有处理该异常,JVM会中止该程序,并打印异常的跟踪栈信息。

    三 多线程中异常跟踪栈的应用
    1 代码示例

    public class ThreadExceptionTest implements Runnable
    {
    	public void run()
    	{
    		firstMethod();
    	}
    	public void firstMethod()
    	{
    		secondMethod();
    	}
    	public void secondMethod()
    	{
    		int a = 5;
    		int b = 0;
    		int c = a / b;
    	}
    	public static void main(String[] args)
    	{
    		new Thread(new ThreadExceptionTest()).start();
    	}
    }

    2 运行结果
    Exception in thread "Thread-0" java.lang.ArithmeticException: / by zero
     at ThreadExceptionTest.secondMethod(ThreadExceptionTest.java:16)
     at ThreadExceptionTest.firstMethod(ThreadExceptionTest.java:10)
     at ThreadExceptionTest.run(ThreadExceptionTest.java:6)
     at java.lang.Thread.run(Thread.java:619)
    3 结果分析
    程序在Thread的run方法中出现了ArithmeticException异常,这个异常的源头是ThreadException的SecondMethod方法,位于文件16行。这个异常传播到Thread类的run方法就会结束。

  • 相关阅读:
    es集群的调优2
    es集群中kibana和es集群的高可用设置
    es集群中参数参数discovery.zen.minimum_master_nodes深度解析
    哔哩哔哩适合后端编程人员的elasticsearch快速实战教程学习总结
    Vue2-基本语句
    SpringBoot-ElasticSearch初使用
    Java-SSO单点登录的3种方式【待完善】
    Java-学习日记(函数式编程与@ControllerAdvice)
    SpringBoot-内置Tomcat启动原理
    Java-学习日记(Atomic,Volatile)
  • 原文地址:https://www.cnblogs.com/ainima/p/6331675.html
Copyright © 2020-2023  润新知