Ho il codice seguente:Corrispondenti (e vincolanti) due classi di eccezioni in una dichiarazione di caso in 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)
}
Questo sembra eccessivamente ripetitivo. Ho provato
case e:ClassCastException | e:JSONException => throw new ParseException(body, e)
ma Scala non lascerò che mi legano e
ad entrambi i tipi - abbastanza giusto. Nel gestore, ho solo bisogno di trattare e
come se fosse di tipo Exception
, ma voglio solo abbinare in primo luogo se è una di quelle classi specifiche. Qualcosa come avere una condizione dopo il tipo abbinato, come:
case e:Exception(ClassCastException|JSONException) => throw new ParseException(body, e)
che non è, ovviamente, la sintassi giusta, ma si spera di vedere quello che voglio dire. E 'possibile una cosa del genere?
Ecco un REPL: http://www.simplyscala.com/2.8 :) – retronym
Non è proprio il Ruby, vero? –
buona risposta, anche se sono bloccato su 2.7 per ora - che avrei dovuto specificare; Ho aggiornato la domanda per riflettere questo ora. – gfxmonk