我有以下代码:在Scala 2.7的一个case语句中匹配(和绑定)两个异常类?
try {
< ... some JSON parsing code .. >
}
catch {
case e:ClassCastException => throw new ParseException(body, e)
case e:JSONException => throw new ParseException(body, e)
}
这似乎过于啰嗦。我试过
case e:ClassCastException | e:JSONException => throw new ParseException(body, e)
但斯卡拉不会让我绑定e
这两种类型 - 公平的。在处理程序中,我只需要将e
视为类型Exception
,但如果它是其中一个特定类,我只想匹配它。像具有匹配系后一个条件,如:
case e:Exception(ClassCastException|JSONException) => throw new ParseException(body, e)
这显然不是正确的语法,但希望你明白我的意思。这样的事情可能吗?
这里有一个REPL: http://www.simplyscala.com/2.8 :) – retronym 2010-07-11 14:30:00
这不是Ruby的一个,是吗? – 2010-07-11 15:01:13
很好的答案,虽然我现在坚持2.7,我应该指定;我已经更新了这个问题以反映现在。 – gfxmonk 2010-07-12 03:04:17