2010-11-18 3 views
4

Я подхватить Exception и пытаюсь изучить getCause() его, выполняя какие-то дальнейшие действия, если cause является типом MyException, определенным в другой библиотеке.Не может отлит из Throwable в MyException

Я получаю эту Eclipse (компилятор?) Ошибка при попытке проверить, если e.getCause() instanceof MyException:

Несовместимые типы условных операндов Throwable и MyException

При попытке бросить (MyException) e.getCause(), я получаю:

Нельзя отливать из Throwable в MyException

Я могу скомпилировать e.getCause().getClass().equals(MyException.class), и это возвращает true.

+3

Какая ошибка? – aioobe

+1

Любая вероятность того, что класс MyException был объявлен дважды, и вы не используете тот, который должен использовать? – Guillaume

+0

Я просто сталкиваюсь с похожим вопросом, мне требуется несколько минут. 'Exception e = null; if (e instanceof InvocationTargetException) 'он сообщает об этой ошибке, ответ на этот вопрос таков: импортируйте класс, который вы используете. – hiway

ответ

3

Решение состоит в том, что MyException унаследовано от Exception во внешней библиотеке, но проект верхнего уровня не включал эту внешнюю библиотеку. Я обнаружил это, когда создал private class, который extend ed MyException, и получил несогласованную ошибку иерархии типов.

+4

В будущих вопросах, отправьте ** фактический ** код и ** фактическую ** ошибку. – BalusC

+0

Я согласен с @BalusC. На самом деле, было бы очень разумно изменить исходный вопрос, чтобы включить фактическую ошибку, чтобы поисковые системы могли ее индексировать, а другие люди в аналогичных обстоятельствах смогут найти это решение. –

+0

Несомненно, это была моя надежда. –

Смежные вопросы