📜  用Java打印异常消息的3种不同方式

📅  最后修改于: 2020-04-04 09:02:16             🧑  作者: Mango

在Java中,有三种方法可以打印异常信息。所有这些都存在于Throwable类中。由于Throwable是所有异常和错误的基类,因此我们可以在任何异常对象上使用这三种方法。

  1. java.lang.Throwable.printStackTrace()方法:通过使用此方法,我们将获得由冒号分隔的异常的名称(例如java.lang.ArithmeticException)和描述(例如:/零),以及堆栈跟踪(在代码,该异常已发生)。
    语法:
    public void printStackTrace()
    // Java程序,展示
    // printStackTrace方法
    public class Test
    {
        public static void main(String[] args)
        {
            try
            {
                int a = 20/0;
            } catch (Exception e)
            {
                // printStackTrace方法
                // 打印行数 + 调用堆栈
                e.printStackTrace();
                // 打印异常
                System.out.println(e);
            }
        }
    }

    运行时异常:

    java.lang.ArithmeticException: / by zero
        at Test.main(Test.Java:9)

    输出:

    java.lang.ArithmeticException: / by zero
    
  2. toString()方法 使用此方法,我们将仅获得异常的名称和描述。请注意,此方法在Throwable类中被重写。
    // Java程序,展示
    // toString方法
    public class Test
    {
        public static void main(String[] args)
        {
            try
            {
                int a = 20/0;
            } catch (Exception e)
            {
                // toString方法
                System.out.println(e.toString());
                // 或者
                // System.out.println(e);
            }
        }
    }

    输出:

    java.lang.ArithmeticException: / by zero
  3. java.lang.Throwable.getMessage()方法:通过使用此方法,我们将仅获得异常的描述。
    语法:
    public String getMessage()
    // Java程序,展示
    // getMessage方法
    public class Test
    {
        public static void main(String[] args)
        {
            try
            {
                int a = 20/0;
            } catch (Exception e)
            {
                // getMessage方法
                // 打印异常消息
                System.out.println(e.getMessage());
                // 打印异常
                // System.out.println(e);
            }
        }
    }

    输出:

    / by zero