Java 为什么不打印堆栈跟踪?

Java 为什么不打印堆栈跟踪?,java,google-app-engine,exception,stack-trace,Java,Google App Engine,Exception,Stack Trace,尝试在浏览器窗口中打印堆栈跟踪时失败。下面是异常块的示例 try { // Add Code Here } catch(Exception exc) { exc.printStackTrace();} 我使用谷歌应用引擎作为我的服务器。堆栈跟踪未打印的原因可能是什么?因为没有捕获异常: try { // Add Code Here } 如果在try块中引发异常,您将只打印堆栈跟踪,如下所示: try { throw new RuntimeException(); }

尝试在浏览器窗口中打印堆栈跟踪时失败。下面是异常块的示例

try {
    // Add Code Here
} catch(Exception exc) { exc.printStackTrace();}
我使用谷歌应用引擎作为我的服务器。堆栈跟踪未打印的原因可能是什么?

因为没有捕获异常:

try {
    // Add Code Here
}
如果在try块中引发异常,您将只打印堆栈跟踪,如下所示:

try {
    throw new RuntimeException();
}
public void printStackTrace() {
    printStackTrace(System.err);
}

所述方法的实现方式如下:

try {
    throw new RuntimeException();
}
public void printStackTrace() {
    printStackTrace(System.err);
}

如果您的容器/IDE/framework重定向了流,那么您将无法在预期位置观察它,另请参见System.setErr。。。;。当然,我希望您已经检查了代码是否真的抛出了异常,如果出现错误,那么它将不会被子句捕获。

您需要更改默认的错误输出流。由于您很可能正在编写servlet,因此可以更改为:

exc.printStackTrace(response.getWriter());
这将在浏览器窗口中打印异常跟踪