- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 Tomcat 6 和 Postgresql 8.4。我的代码如下所示:
try {
// Prepared statement inserting something...
} catch (final PSQLException e) {
LOG.log(Level.SEVERE, "Saving failed.", e);
} catch (final SQLException e) {
LOG.log(Level.SEVERE, "Saving failed (SQL).", e);
}
插入 DB 可能会导致 PSQLException(例如唯一键违规),我想用第一个 catch
捕获它。然而,我在日志中实际找到的是这样的:
SEVERE: Saving failed (SQL).
org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "UZIVATELIA_U_LOGIN"
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:273)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
at cz.ecoremedia.realpad.web.backend.Users.saveNewUser(Users.java:119)
at cz.ecoremedia.realpad.web.backend.Users.saveUser(Users.java:237)
at org.apache.jsp.User_jsp._jspService(User_jsp.java:159)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)
如果我检查我捕获的 e
的类型,例如:
} catch (final SQLException e) {
LOG.log(Level.SEVERE, e.getClass().getName());
LOG.log(Level.SEVERE, "Saving failed (SQL).", e);
它仍然告诉我这是 org.postgresql.util.PSQLException
。
当我在我的 Eclipse 中本地尝试这个时,它完美地工作 - PSQLException
在第一个 catch
block 中被正确捕获。
如果我正确理解问题,我捕获的 org.postgresql.util.PSQLException
与实际获取的 org.postgresql.util.PSQLException
是不同的类抛出。这怎么可能?我做错了什么?
感谢您的想法。
最佳答案
事实证明,我的 Tomcat 的 lib/
文件夹中有另一个 JDBC 驱动程序,而不是 WEB-INF/lib/
中的驱动程序。删除 Tomcat 解决了我的问题。
(是的,这是一个不同的类加载器问题,感谢@NathanHughes。)
关于java - PSQLException 未被捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10742577/
我在测试中期望 PSQLException: @Test(expected = org.postgresql.util.PSQLException.class) public void whenAdd
我正在使用 Tomcat 6 和 Postgresql 8.4。我的代码如下所示: try { // Prepared statement inserting something... } cat
嗨!我们使用 Postgres 作为现有应用程序的新数据库。这个问题是最近我们从 mysql 数据库迁移到 postgres 后出现的。迁移到 postgres 后,eclipse BIRT 报告开始
我开发了一个 API 服务,可以将一些数据添加到数据库中。我为实体的 name 字段设置了唯一约束。每当我尝试插入重复的 name 值时,我都会给出以下堆栈跟踪。 Caused by: org.pos
我尝试使用 Postman 将等同于类 Album 的 json 保存到 Postgres。我在 Postgres 中为 Album 类和 Album 类的嵌入对象创建了两个实体 - Duration
更新:我从问题中排除了 Hibernate。我完全修改了问题描述以尽可能简化它。 我有带 noop 触发器的 master 表和 detail 表,master 和 detail 表之间有两种关系:
我的 SQL 请求有问题,当我运行请求时,我收到此消息错误: org.postgresql.util.PSQLException: A result was returned when none wa
我正在使用 Jersey 创建一个 RESTful API,其中实现了 ExceptionMapper 类来捕获所有错误。 public class ExceptionFilter implement
环境 视窗 HikariCP 版本:2.6.0 JDK 版本:1.8.0_65 数据库:PostgreSQL 驱动程序版本:42.0.0 org.postgresql 它工作了一段时间,比如 2 小时
我对我的一个实体有一个唯一的约束,每当我收到一个 PSQLException,只要违反该约束就会发生,我想用一个错误的请求来响应。 这是我尝试实现的异常处理程序: @ControllerAdvice
使用 spring-boot-starter-data-jpa(版本 2.0.4.RELEASE)和 PostgreSQL(版本 9.5.10),我不断收到 PSQLException:查询没有返回结
我正在使用 Hibernate 5.2,我想删除一条记录。 表与另一个表有关系,并不总是可以删除。我想捕获我的 PSQLException 并找到原因。我尝试捕获它,例如HibernateExcept
我正在尝试在表上进行插入并获取自动生成的主键 PreparedStatement pstm = dbcon.prepareStatement(sql,Statement.RETURN_GENE
我遇到一个性能问题,即当访问特定页面且该页面无法加载时,应用程序无法执行数据库查询。错误的堆栈跟踪如下: Caused by: java.rmi.UnmarshalException: Error u
我们已经部署了几个在同一个 tomcat 容器中运行的应用程序,并通过 JNDI 查找连接到我们的 postgresql 数据库。这是经过清理的配置 (server.xml): 这几个月都运行良好,
你好,我正在尝试在 postgresql 数据库中上传文件,但出现错误:这是代码的堆栈跟踪。任何人都可以告诉我哪里出了问题吗?我的查询是- String sql = "insert into proj
我正在尝试将我的数据库和网络应用程序从 PostgreSQL 迁移到 MySQL,该应用程序使用的是 play 2.3.0。 我使应用程序与 MySQL 一起工作,但我还没有进行错误管理,我需要你的帮
public UserBean authenticate(String username,String password){ PostGresDAO pg=new PostGresDAO();
我正在尝试在 PostgreSQL 8.4.2 数据库上运行 hibernate 。每当我尝试运行一个简单的 java 代码时,例如: List users = service.findAllUser
我正在尝试获取 PlaceEntity。我之前存储了一堆 GooglePlaceEntity 对象,其中 @Entity @Table(name = "place") @Inheritance(
我是一名优秀的程序员,十分优秀!