我有以下代碼:在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