gpt4 book ai didi

java - 如何在 Scala 中获取异常的堆栈跟踪以打印它?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:52:22 26 4
gpt4 key购买 nike

在我的一个程序中,我想捕获所有异常并显式打印它们(以便能够在仍然看到异常的情况下继续执行 finally)。

所以我试过这个:


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

但这(使用 getStackTrace)本身会导致“java.lang.OutOfMemoryError:PermGen 空间”。我究竟做错了什么?我确信在得到这个之前我有足够的空闲 JVM 堆内存(因为我已经尝试在程序的最开始导致异常)。

最佳答案

我认为你应该发布一个准确的、独立的工作示例,因为这对我使用 2.8.0 有效(即完全没有内存问题):

scala> def foo( f : () => Unit) : Unit = try {
| f()
| } catch { case e : Exception => println("H" + e.getStackTrace) }
foo: (f: () => Unit)Unit

scala> foo(() => throw new NullPointerException)
H[Ljava.lang.StackTraceElement;@30a4effe

我想知道你是否有一个异常是它自己的原因?相反,您的程序可能在内存上运行非常低(32Mb is the default on a client-class machine by the way)并且您的堆栈非常深(在 scala 领域并不少见!)

关于java - 如何在 Scala 中获取异常的堆栈跟踪以打印它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4010800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com