Как найти исключения, которые были проигнорированы?

Нет необходимости объявлять проверенные исключения в предложении throws или обрабатывать их в блоке try / catch в scala - это то, что мне нравится. Но это может быть проблемой, когда исключение нужно обработать, но оно проигнорировано. Я ищу инструменты (возможно, флаг компилятора / плагин), чтобы найти методы, которые игнорируют проверенные исключения.


person Jeriho    schedule 10.06.2011    source источник
comment
Был обсужден список рассылки дебатов по scala, и Мартин Одерски сказал следующее: groups.google .com / group / scala-debug / msg / 99369ca6c4959894.   -  person michael.kebe    schedule 15.06.2011


Ответы (2)


Один из вариантов - перехватить исключение на очень высоком уровне вашего приложения (вверху будет main-метод).

Другой вариант - использовать UncaughtExceptionHandler (если вы используете JVM):

object MyUncaughtExceptionHandler extends Thread.UncaughtExceptionHandler {
  def uncaughtException(thread: Thread, throwable: Throwable) {
    println("Something bad happened!")
  }
}

val t = new Thread(new Runnable {
  override def run() {
    null.toString
  }
});

t.setUncaughtExceptionHandler(MyUncaughtExceptionHandler)
t.start()
person michael.kebe    schedule 10.06.2011
comment
Похоже, оператор ищет статическую проверку, и вы предлагаете два метода выполнения. - person ziggystar; 10.06.2011
comment
@ziggystar Верно, ждать чего-то плохого в продакшене - не вариант. - person Jeriho; 15.06.2011

AFAIK, таких инструментов нет, однако один метод, который я успешно использовал, - это просто установить точку останова на точке выброса в вашей среде IDE (IntelliJ или Eclipse) для java.lang.Throwable, которая приостановит выполнение в точке выброса каждое исключение (или ошибку) java во время работы программы, а затем продолжать нажимать "play", чтобы увидеть их все (по крайней мере, на пути выполнения, который вас интересует)

Ваше здоровье...

person Alex Kravets    schedule 11.12.2011