Нет необходимости объявлять проверенные исключения в предложении throws или обрабатывать их в блоке try / catch в scala - это то, что мне нравится. Но это может быть проблемой, когда исключение нужно обработать, но оно проигнорировано. Я ищу инструменты (возможно, флаг компилятора / плагин), чтобы найти методы, которые игнорируют проверенные исключения.
Как найти исключения, которые были проигнорированы?
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
Похоже, оператор ищет статическую проверку, и вы предлагаете два метода выполнения.
- person ziggystar; 10.06.2011
@ziggystar Верно, ждать чего-то плохого в продакшене - не вариант.
- person Jeriho; 15.06.2011
AFAIK, таких инструментов нет, однако один метод, который я успешно использовал, - это просто установить точку останова на точке выброса в вашей среде IDE (IntelliJ или Eclipse) для java.lang.Throwable, которая приостановит выполнение в точке выброса каждое исключение (или ошибку) java во время работы программы, а затем продолжать нажимать "play", чтобы увидеть их все (по крайней мере, на пути выполнения, который вас интересует)
Ваше здоровье...
person
Alex Kravets
schedule
11.12.2011