2015-11-22 2 views
2

При попытке использоватьКомпилятор жалуется Обработка нескольких исключений

catch(EntityExistsException | PersistenceException eeEx) 

Компилятор жалуется:

Не исключение типа объекта не может быть выброшен; тип исключения должен быть подклассом Throwable

Я использую затмение Луну с набором компиляторов для Java 8 для проекта

+2

Покажите вам calsses 'EntityExistsException' и' PersistenceException' –

+1

Действительно, это очень странная ошибка. Не могли бы вы также отправить часть try? – Tunaki

+0

@ sᴜʀᴇsʜᴀᴛᴛᴀ это исключения из JPA, каждый из них работает один штраф –

ответ

0

звучит как один из тех, кто отсутствует »распространяется исключение.

Я не думаю, что это имеет какое-либо отношение к «Mutliple Exception Handling», JDK8 обязательно скомпилирует такой код.

Существуют ли оба из них на самом деле являются исключениями/являются субмаринами?

+0

это исключения из JPA, каждый из них работает один штраф –

+0

OK. Можете ли вы проверить, что это фактический класс, который вы ожидаете во время выполнения? Возможно, что во время выполнения он становится переопределенным. Используйте Class.forName для всех тех, о которых идет речь, если вы разрабатываете в eclipse ctrl + shit + t поиск по этому типу, чтобы узнать, что соответствует в вашем пути к классу проекта. Но найти все экземпляры его во время выполнения в любом случае, даже если поиск по типу показывает только 1 место.Еще одна вещь: можете ли вы разместить общий объект Exception/RuntimeException и посмотреть, работает ли он? Если это так, то это то, что я сказал выше. –

2

Я просто столкнулся с этим, и это сводило меня с ума.
Я создавал обработчик исключений с несколькими catch, добавляя URISyntaxException в существующий улов.
Eclipse, пожаловалась с

Не исключение типа объекта не может быть выброшен; тип исключения должен быть подкласс Throwable

я наконец-то заметил, что я не добавил соответствующий оператор импорта, так затмение не знал тип добавляемого исключения.
Было бы хорошо, если бы затмение жаловались с

URISyntaxException не может быть разрешен к типу

который, что говорит, когда исключение составляет сам по себе.
Ошибка, которую вы получаете, когда она является частью многопользовательского режима, не является интуитивной.

0

В затмении, просто убедитесь, что вы импортировать все исключения в предложении поймать

catch(SomeException se | SomeException1 se1 | SomeException2 se2){ 
    doSomething(); 
} 

Отсутствующие операторы импорта покажет ошибку, как это.

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