如何在Scala中获取异常的堆栈跟踪以进行打印?

Iva*_*van 8 java scala exception

在我的程序中,我想捕获所有异常并明确打印它们(以便能够在仍然看到异常的情况下最终继续).

所以我试过这个:


try {
  ...
}
catch {
  case ex : Exception => {
    println ("\n" + ex)
    println ("\n" + ex.getStackTrace + "\n")
  }
}
finally {
  ...
}

但是(使用getStackTrace)本身会导致"java.lang.OutOfMemoryError:PermGen space".我究竟做错了什么?我确信在获得此内容之前我有足够的免费JVM堆内存(因为我在程序的最开始尝试引发异常).

Tom*_*ett 1

听起来您需要分配更多的永久空间。在 Java 中,您可以使用 JVM 参数来执行此操作:

-XX:MaxPermGen=256m
Run Code Online (Sandbox Code Playgroud)

您可以通过设置环境变量来设置 Scala 使用的 JVM 参数:

JAVA_OPTS="-XX:MaxPermGen=256m"
Run Code Online (Sandbox Code Playgroud)