Как посмотреть исключение, когда в Eclipse нет подвоха? - PullRequest
1 голос
/ 30 января 2012

Можно ли определить, какое исключение произошло, когда оно было перехвачено только finally?

Ниже приведена выдержка из стандартного кода ThreadPoolExecutor:

    public void run() {
        try {
            Runnable task = firstTask;
            firstTask = null;
            while (task != null || (task = getTask()) != null) {
                runTask(task);
                task = null;
            }
        } finally {
            workerDone(this);
        }
    }

Т.е. здесь нет catch.Мой отладчик останавливается на вызове workerDone(), указывающем на возникновение RuntimeException, но, поскольку здесь нет переменной исключения, я не вижу способа узнать сообщение об ошибке или что-то в этом роде.

Ответы [ 2 ]

3 голосов
/ 30 января 2012

Вы должны иметь возможность добавить "точку останова исключения" в отладчике для необработанных исключений. Обычно это вкладка рядом с вкладкой «переменные» в перспективе «Отладка».

1 голос
/ 30 января 2012

Не только для затмения. Вы можете использовать Thread.setUncaughtExceptionHandler (...) Если вы можете перекомпилировать, сделайте это внутри метода run. Если нет, ASAIK, даже если вы сделаете это в главном потоке, вы будете ловить исключения во «внутренних» потоках.

setUncaughtExceptionHandler Пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...