printStackTrace() 方法在 Java 中的用途是什么?

我正在通过一个套接字程序。在其中,在 catch 块中的对象上调用。
实际上有什么作用?printStackTraceIOExceptionprintStackTrace()

catch(IOException ioe)
{
    ioe.printStackTrace();
}

我不知道它的目的。它的用途是什么?


答案 1

它是实例上的一种方法,用于将实例的堆栈跟踪输出到 System.errException

这是一个非常简单,但非常有用的工具,用于诊断异常。它告诉您发生了什么以及代码中发生这种情况的位置。

以下是在实践中如何使用它的示例:

try {
    // ...
} catch (SomeException e) { 
    e.printStackTrace();
}

请注意,在“严肃的生产代码”中,由于各种原因(例如不太有用且线程不安全),您通常不想这样做。在这些情况下,您通常使用一些日志框架,该框架使用类似 这样的命令提供相同(或非常相似)的输出。System.outlog.error("Error during frobnication", e);


答案 2

我对此也有点好奇,所以我只是整理了一些示例代码,您可以在其中看到它正在做什么:

try {
    throw new NullPointerException();
}
catch (NullPointerException e) {
    System.out.println(e);
}

try {
    throw new IOException();
}
catch (IOException e) {
    e.printStackTrace();
}
System.exit(0);

调用 println(e)

java.lang.NullPointerException

调用 e.printStackTrace()

java.io.IOException
      at package.Test.main(Test.java:74)

推荐