У меня есть следующий код:
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)
, но Scala не позволит мне связать e
с обоими типами - достаточно справедливо.В обработчике мне нужно обрабатывать e
только так, как если бы он был типа Exception
, но я хочу сопоставить только в первую очередь, если это один из тех конкретных классов.Что-то вроде наличия условия после сопоставленного типа, например:
case e:Exception(ClassCastException|JSONException) => throw new ParseException(body, e)
Это явно не правильный синтаксис, но, надеюсь, вы понимаете, что я имею в виду.Возможна ли такая вещь?