这是为了从异常处理中恢复而编写的一个处理程序,但是当我调用它时它没有恢复但是因以下错误消息而失败
def exphandler(i: Any): Try[Any] = Try(i) recover {
case e => "Hello"
}
exphandler(BigDecimal(Cols(5))/adjust_currency_map(static(4))), //Open price
======================================
java.lang.NumberFormatException
//| at java.math.BigDecimal.<init> (BigDecimal.java:459)
//| at java.math.BigDecimal.<init>(BigDecimal.java:728)
//| at scala.math.BigDecimal$.exact(BigDecimal.scala:125)
//| at scala.math.BigDecimal$.apply(BigDecimal.scala:283)
//| at com.DC.FTDataParser.FileParser$$anonfun$1.apply(FileParser.scala:115)
===============================
任何一点都会有所帮助,因为它会让我发疯。
答案 0 :(得分:3)
exphandler
的参数在被Try
捕获之前被评估。您可以使用by-name parameter:
def exphandler(i: => Any): Try[Any] = Try(i) recover {
case e => "Hello"
}
现在,exphandler
的参数在Try
调用之前不会被评估,其中异常将被捕获并表示为您所期望的。