【发布时间】:2012-09-16 19:22:44
【问题描述】:
我从一些人那里听说,在 Scala 中,我们倾向于(像其他函数式语言一样)不破坏控制流......相反,按照惯例,我们在 Either Left 中返回错误。
但是我们如何从那个异常中获取 stracktrace 呢?
现在我在左侧返回一个简单的Error 案例类,其中包含代码、消息和原因(Error 也是)。但是,如果我有错误,我将无法获取堆栈跟踪。
如果我的应用程序变得复杂,可能很难找到返回 Error 的代码块...根本原因是必不可少的。
那么我们在实践中做了什么?
我应该在我的Left 中返回java 类型Exception 或Throwable,而不是自定义Error?
在不丢失堆栈跟踪和原因等重要信息的情况下,Scala 异常处理的最佳做法是什么?
【问题讨论】:
-
作为一个注释,在即将发布的 Scala 2.10 there is also Try 中进行错误处理
-
@om-nom-nom 谢谢,这看起来真的很好!
标签: java scala exception exception-handling either