Tengo el siguiente código Scala maniquí en el archivo test.scala
:capturar todas las excepciones en Scala 2.8 RC1
class Transaction {
def begin() {}
def commit() {}
def rollback() {}
}
object Test extends Application {
def doSomething() {}
val t = new Transaction()
t.begin()
try {
doSomething()
t.commit()
} catch {
case _ => t.rollback()
}
}
Si compilar esto en Scala 2.8 RC1 con scalac -Xstrict-warnings test.scala
Voy a por el siguiente aviso:
test.scala:16: warning: catch clause swallows everything: not advised.
case _ => t.rollback()
^
one warning found
Entonces, si no se recomiendan las expresiones catch-all, ¿cómo se supone que implemente un patrón así? Y aparte de eso, ¿por qué no se recomiendan tales expresiones de todos modos?
OK. Este funciona para transacciones. Pero, ¿qué sucede si quiero ignorar por completo una excepción arrojada por un método simplemente porque no importa en este momento? –
Puedes 'atrapar {caso _: Excepción =>}'. 'Error' es' Throwable' pero no una 'Exception', por lo general es mejor pasar. Si realmente quiere decir: "No me importa si lo intento y no lo veo, al menos quiero dar lo mejor", entonces puede vivir con el mensaje de advertencia (estricto). Es por eso que es una advertencia, no un error. –
Sí, eso funciona. ¡Gracias! Tienes razón, que atrapar 'Error' no es realmente lo que quiero :-) –