Поймать в Java исключение, которое не создается в соответствии с сигнатурой [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Поймать в Java исключение, которое не создается в соответствии с сигнатурой [закрыто]

Сообщение Anonymous »

Я пытаюсь перехватить исключение, которое не может быть создано в соответствии с сигнатурой метода getSingleResult().

Код: Выделить всё

    public RSA findAndLock() {
try {
final TypedQuery query = ...
return query.getSingleResult(); // RSARepositoryImpl.java:67
} catch (PessimisticLockException | LockTimeoutException ex) {
return null;
} catch (final Throwable t) {
LOGGER.error("Error of type while locking '{}': {}", t.getClass().getCanonicalName(), t.getMessage());
return null;
}
}
Согласно stacktrace генерируется исключение org.postgresql.util.PSQLException, но согласно сигнатуре это проверенное исключение не разрешено.
Также (Throwable t) Ветка catch не выполняется.

Код: Выделить всё

Caused by: org.postgresql.util.PSQLException: ERROR: could not obtain lock on row in relation "rsa"
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2733)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2420)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:372)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:517)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:434)
at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:194)
at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:137)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:57)
at org.hibernate.loader.Loader.getResultSet(Loader.java:2322)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:2075)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:2037)
at org.hibernate.loader.Loader.doQuery(Loader.java:956)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:357)
at org.hibernate.loader.Loader.doList(Loader.java:2868)
at org.hibernate.loader.Loader.doList(Loader.java:2850)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2682)
at org.hibernate.loader.Loader.list(Loader.java:2677)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:540)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:400)
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:218)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1459)
at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1649)
at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1617)
at org.hibernate.query.internal.AbstractProducedQuery.getSingleResult(AbstractProducedQuery.java:1665)
at xxx.repository.impl.RSARepositoryImpl.findAndLock(RSARepositoryImpl.java:67)
at xxx.repository.impl.RSARepositoryImpl$$FastClassBySpringCGLIB$$69c152cd.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:792)

РЕДАКТИРОВАТЬ: Почему кто-то закрывает этот вопрос без уважительной причины? Пожалуйста, не закрывайте его, потому что вы этого не понимаете. Это экспертный вопрос.
Решение по перехвату невыброшенного проверенного исключения не будет работать, по крайней мере, не в Java 17

Подробнее здесь: https://stackoverflow.com/questions/789 ... -signature
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»