Я следующий фиктивный код Scala в файле test.scala
:перехватывать все исключения в 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()
}
}
Если я компилирую это на Scala 2.8 RC1 с scalac -Xstrict-warnings test.scala
я получаю следующее предупреждение:
test.scala:16: warning: catch clause swallows everything: not advised.
case _ => t.rollback()
^
one warning found
Итак, если не использовать выражения catch-all, как я должен реализовать такой шаблон? И кроме того, почему такие выражения не рекомендуются так или иначе?
OK. Это работает для транзакций. Но что, если я хочу полностью игнорировать исключение, созданное методом только потому, что в данный момент это не имеет значения. –
Вы можете 'catch {case _: Exception =>}'. 'Ошибка'' Throwable', но не 'Exception' - обычно лучше пройти. Если вы действительно имеете в виду: «Мне все равно, если я попытаюсь и не поймаю это, я, по крайней мере, хочу дать ему лучший результат», тогда вы можете жить с (строгим) предупреждающим сообщением. Вот почему это предупреждение, а не ошибка. –
Да, это работает. Благодаря! Вы правы, что ловить «Ошибка» на самом деле не так, как я хочу :-) –