当前位置: 首页 > 知识库问答 >
问题:

JDBCtemplate不允许捕获SQLException

丌官嘉良
2023-03-14

我使用的是Spring JDBC,我有一个连接到PostgreSQL DB的测试方法(这是一个示例代码,这不是原始代码):

public void toConnect() {
    final String sql = "SELECT 1";
    template.execute(sql);
}
public void toConnect() throws CGConnException {
    final String sql = "SELECT 1";
    try {
        template.execute(sql);
    } catch (DataAccessException e) {
        throw new CGConnException("CG : Error DataBase connection. - ", e.getCause());
    }
}

问题是我不能处理异常,我希望只打印捕获的消息,而没有异常的详细信息。

如果运行时配置参数出错或PostgreSQL数据库关闭,就会生成一个PSQLException,这很好,但我需要控制这个异常。但是,jdbctemplate.execute(sql)方法抛出一个DataAccessException,因此,它不可能在try/catch块上捕获PSQLEException(或者我不知道该怎么做)。因此,当运行该程序时,控制台中总是显示堆栈跟踪:

2021-05-02 03:10:14.052 ERROR 73837 --- [           main] .PostgresClientTestConnectionApplication : Error : CG : Error DataBase connection.

在这种情况下,我只需要打印一个日志,作为“连接错误”或类似于上面示例的内容。

提前谢谢你。

共有1个答案

孙风畔
2023-03-14

其实没有错。当捕获异常时,异常被处理,程序最终正确。

try {
    template.execute(sql);
    logger.error("Connection Successful . . .");
} catch (Exception e) {
    logger.error("Error connection" + e.getMessage());
    throw new CGConnException("CG : Error DataBase connection. - ", e);
}

在运行控制台中,它是打印关联堆栈跟踪,因为Spring内部类来做这件事,但并不意味着我们做错了什么,或者没有处理异常。

 类似资料:
  • 问题内容: 在Java中,引发 检查 异常(Exception或其子类型- IOException,InterruptedException等)的方法必须声明 throws 语句: 不声明语句的 方法不能 引发检查的异常。 但是在Java中使用安全方法捕获检查的异常仍然合法: 其实没有 有点可笑:编译器知道 e 不是检查的异常,因此可以将其重新抛出。事情甚至有些荒谬,此代码无法编译: 第一个片段是

  • 问题内容: 一切都很棒,直到遇到真正需要捕捉例外的地方。当我放置 在 阻止我得到: 在这种情况下我该怎么办? 谢谢, 问题答案: 这是因为,任何一种方法(javadoc链接)都不会引发检查异常。Spring将其转换为DataAccessException之一,它是更通用的运行时异常家族,以抽象出任何特定的基础数据库实现。

  • 这行代码: 未能通过W3C HTML5验证程序检查:

  • 我用Spring靴和Spring安全。 我这样添加基于url的安全性 有没有办法只授权get、post、put…在url上担任某些角色?

  • 问题内容: 我看到以下错误: 使用此代码: 是什么原因引起的,如何解决? 问题答案: 在当前域之外发出ajax请求时,Javascript是受限制的。 例1:您的域名为example.com,并且您想向test.com提出请求=>您不能。 例2:您的域名是example.com,并且您想向inner.example.com发送请求,但是您不能。 例3:您的域名为example.com:80,并且您

  • 我有一个jquery脚本(从github下载),可以删除实体。下面是脚本。 }); 而我就是这样利用它的 相应的laravel路线如下所示 然而,当我尝试按下X(删除按钮)时,我得到了405方法不允许的错误。错误如下 这在我的本地沙箱上运行良好。 任何帮助都将不胜感激。 谢啦

  • 我有一个使用调用的进程。此任务被提交给executor服务。我允许进程在尝试取消它之前有x秒的运行时间。但是,当我调用并且任务在方法中等待时,线程/任务不会被取消。 我已经对代码进行了测试,如果将替换为,则会得到。但是,当任务位于内时,不会出现中断。在face中,直到Restful调用完成,该方法才返回。 我看到了这篇文章,取消、中止、中断一个spring android resttemplate

  • 编译器知道检查的异常不能在安全方法内抛出-所以也许它应该允许只捕获未检查的异常? 回到主要问题--有没有理由以这种方式实现捕获检查异常?这仅仅是设计中的一个缺陷还是我遗漏了一些重要的因素--也许是向后的不兼容性?在此场景中,如果只允许捕获,可能会出现什么问题?实例非常感谢。