J'ai le code suivant:Correspondance (et liaison) de deux classes d'exception dans une instruction case dans Scala 2.7?
try {
< ... some JSON parsing code .. >
}
catch {
case e:ClassCastException => throw new ParseException(body, e)
case e:JSONException => throw new ParseException(body, e)
}
Cela semble trop répétitif. J'ai essayé
case e:ClassCastException | e:JSONException => throw new ParseException(body, e)
mais Scala ne me laisse pas e
lie aux deux types - assez juste. Dans le gestionnaire, j'ai seulement besoin de traiter e
comme s'il était de type Exception
, mais je veux seulement correspondre en premier lieu si c'est l'une de ces classes spécifiques. Quelque chose comme ayant une condition après le type adapté, comme:
case e:Exception(ClassCastException|JSONException) => throw new ParseException(body, e)
C'est évidemment pas la bonne syntaxe, mais nous espérons que vous voyez ce que je veux dire. Une telle chose est possible?
Voici un REPL: http://www.simplyscala.com/2.8 :) – retronym
Ce n'est pas tout à fait le Ruby, n'est-ce pas? –
bonne réponse, même si je suis coincé sur 2.7 pour l'instant - que j'aurais dû préciser; J'ai mis à jour la question pour refléter cela maintenant. – gfxmonk