这是一个为从异常处理中恢复而编写的处理程序,但当我调用它时,它没有恢复,但由于以下错误消息而失败
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)
====================================
任何一点都会有帮助,因为这让我很生气。
exphandler
的参数在其引发的异常被Try
捕获之前正在进行求值。您可以使用按名称参数来修复此问题
def exphandler(i: => Any): Try[Any] = Try(i) recover {
case e => "Hello"
}
现在,exphandler
的参数要等到Try
的调用内部才能求值,在那里异常将被捕获并按预期表示。