Java 是否可以检索org.postgresql.util.psqleexception';EJB内部IllegalArgumentException的原因是什么?
我有一个使用EJB3的项目,当代码抛出与SQL相关的异常时,它会向开发团队发送通知。 例如,使用以下代码:Java 是否可以检索org.postgresql.util.psqleexception';EJB内部IllegalArgumentException的原因是什么?,java,hibernate,exception-handling,ejb,Java,Hibernate,Exception Handling,Ejb,我有一个使用EJB3的项目,当代码抛出与SQL相关的异常时,它会向开发团队发送通知。 例如,使用以下代码: Query q = getEntityManager().createNativeQuery(query); List<Object[]> results = q.getResultList(); Query q=getEntityManager().createNativeQuery(查询); List results=q.getResultList(); 如果我犯了语法
Query q = getEntityManager().createNativeQuery(query);
List<Object[]> results = q.getResultList();
Query q=getEntityManager().createNativeQuery(查询);
List results=q.getResultList();
如果我犯了语法错误,我将捕获第一个异常java.lang.IllegalArgumentException:位置为[2]的参数不存在
,它将发送给devs。
在Eclipse中,我可以看到其他异常,如javax.ejb.EJBException:javax.persistence.PersistenceException:org.hibernate.exception.sqlgrammareexception:cannotextractedresultset
,以及最后一个带有我想要捕获的消息的异常:,原因是:org.postgresql.util.PSQLException:ERROR:syntax ERROR:at或接近“和”
。有没有办法获取更多详细信息?
我可以看到抑制异常数组是空的
更新:如果我在catch
中直接插入org.postgresql.util.psqleexception
,Eclipse会声明:
决不会从try语句体引发此异常
您在Eclipse stracktrace中看到的异常是存储在
IllegalArgumentException
中的异常,形成了一系列错误原因
通过遍历此原因链,可以获得postgres异常:
catch(IllegalArgumentException e) {
Throwable t = e;
while (t != null)
{
if (t instanceof PSQLException) {
PSQLException pe = (PSQLException)t;
// analyse the exception
break;
}
t = t.getCause();
}
}