Different Ways to Print Exception Message in Java

2025 年 4 月 7 日 | 阅读 4 分钟

在本节中,我们将学习如何使用 Java Throwable 类的不同方法在 Java 中打印异常消息。Throwable 类提供了以下三种方法来打印异常消息:

  • 使用 printStackTrace 方法
  • 使用 getMessage() 方法
  • 使用 toString() 方法
Different Ways to Print Exception Message in Java

让我们逐一详细讨论。

使用 printStackTrace() 方法

printStackTrace() 方法定义在 Throwable 类中,该类属于 java.lang 包。该方法打印异常的名称、描述(例如/ by zero)和堆栈跟踪(异常发生的行号和类名)。堆栈跟踪会追溯下一个异常发生的位置。它被广泛用于打印异常消息。

printStackTrace() 方法有三个版本:

语法描述
printStackTrace()该方法将此 throwable 及其回溯信息打印到标准错误流。
public void printStackTrace(PrintStream s)该方法将 throwable 及其回溯信息打印到指定的打印流。
public void printStackTrace(PrintWriter s)该方法将 throwable 及其回溯信息打印到指定的打印编写器。

为了理解 printStackTrace() 方法的概念,首先,我们将创建一个引发除零异常的Java 程序。在此程序中,我们将不使用 printStackTrace() 方法来打印异常。

PrintExceptionMessage1.java

运行上述程序时,我们会收到一个算术异常,并在控制台上打印以下消息:

Different Ways to Print Exception Message in Java

在上述消息中,我们无法确定哪一行抛出了异常。因此,很难找到异常发生的位置。为了解决这个问题,我们使用 printStackTrace() 方法。让我们在 Java 程序中使用 printStackTrace() 方法。

PrintExceptionMessage2.java

让我们运行上面的程序。

Different Ways to Print Exception Message in Java

上述异常消息清楚地显示了哪个方法引发了异常,异常的类型是什么,以及哪一行抛出了异常。

消息的第一行显示程序抛出了一个 java.lang.ArithmeticException(除零)。第二行显示异常发生在第 9 行,并且 divide() 方法抛出了异常。第三行显示异常发生在第 21 行。main() 方法也抛出了异常,因为 divide() 方法是在 main() 方法内部调用的。因此,使用 printStackTrace() 方法,我们可以轻松地指出异常的确切位置

使用 getMessage() 方法

getMessage() 方法也定义在 Throwable 类中,该类属于 java.lang 包。该方法仅打印异常的消息。它既不打印异常的名称,也不打印描述。它被广泛用于打印异常消息。

语法

它返回此 Throwable 实例的详细消息字符串。它可能为 null。

让我们在 Java 程序中使用 getMessage() 方法。

PrintExceptionMesssage3.java

让我们运行上面的程序。

Different Ways to Print Exception Message in Java

我们观察到它只打印了异常。因此,它并不常用,因为它不打印异常的详细描述。

使用 toString() 方法

toString() 方法的 Throwable 类覆盖了 Object 类的 toString() 方法。它打印异常的简短描述。它不显示其他信息(例如异常名称和堆栈跟踪)。它不常用于打印异常消息。

让我们在 Java 程序中使用 toString() 方法。

PrintExceptionMessage4.java

让我们运行上面的程序。

Different Ways to Print Exception Message in Java

在上面的消息中,我们观察到它只打印了异常的名称和类型。它没有指出异常发生的行。

我们已经看到了在 Java 中打印异常消息的不同方法。我们建议您使用 printStackTrace() 方法,因为它指出了异常发生的位置。