当模式将异常与case语句匹配时,是否有更简单的方法将同一异常与一组异常类型匹配?而不是:
} catch {
case e if e.isInstanceOf[MappingException] || e.isInstanceOf[ParseException] =>
这样的事情会很好:
case e: MappingException | ParseException | SomeOtherException =>
这样的事情可能吗?
答案 0 :(得分:46)
你可以这样做:
catch {
case e @ (_: MappingException | _: ParseException | _: SomeOtherException) =>
}
如果您尝试保存一些代码行并定期处理相同类型的异常,您可以考虑事先定义部分函数以用作处理程序:
val myHandler: PartialFunction[Throwable, Unit] = {
case e @ (_: MappingException | _: ParseException | _: SomeOtherException) =>
}
try {
throw new MappingException("argh!")
} catch myHandler