首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹簧框架工作在RuntimeExceptions中包装检查异常

弹簧框架工作在RuntimeExceptions中包装检查异常
EN

Stack Overflow用户
提问于 2009-05-14 17:52:39
回答 3查看 3.7K关注 0票数 4

让这个方法调用:

代码语言:javascript
复制
   ->
    simpleJdbcTemplate.queryForInt(SQL,null);
   ->

queryForInt()方法在SimpleJdbcTemplate中抛出一个DataAccessException,这是一个运行时异常。我想向应用程序的视图层发布异常,因为Spring将检查异常包装在RuntimeExceptions中,所以我一直停留在这里。

我该怎么做?

解释1:

Spring框架的JDBC抽象框架提供的增值--他们说Spring框架处理了除3和6. 3和6以外的所有东西,需要由应用程序开发人员编写代码。

定义连接parameters

  • Open connection

  • Specify statement

  • Prepare并执行statement

  • Set up循环来迭代结果(如果有的话)

  • 为每个iteration

  • Process、任何exception

  • Handle transactions

  • Close、连接

执行工作

但是,如果我遇到一种情况,即连接到数据库的连接在一定时间后丢失,程序就会启动。然后,当调用上述方法made.since (我不处理无法通知用户界面(视图)的异常)时,将引发运行时异常。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-14 17:58:06

它取决于您的视图层是否捕获检查的异常(不是RuntimeException或Error子类的throwable子类,或者不是RuntimeException或错误的直接实例),还是未检查的异常(RuntimeException或这些Throwable子类的错误或子类)。

通常,您要么有这样的东西:

代码语言:javascript
复制
try {
//... processing
} catch(Exception/RuntimeException e) {
// propagate the exception to the view in a meaningful manner
}

如果是这样的话,对于运行时异常,您就不需要做任何事情了--这个块将捕获运行时异常。

假设您使用的是支持包装异常的Java版本,如果您想将其转换为checked,只需做以下工作:

代码语言:javascript
复制
try {
//...spring code
} catch(DataAccessException e) {
throw new Exception(e);
}

然后,该处理之上的层将将其作为检查异常捕获。

票数 1
EN

Stack Overflow用户

发布于 2009-05-14 18:45:20

Spring抛出运行时异常并不意味着您无法捕获它。如果您想为DataAccessExceptions做一些特别的事情,您当然可以这样做:

代码语言:javascript
复制
try {
    // query logic
} catch (DataAccessException ex) {
    // handle the exception
}

如果您使用的是Spring的MVC框架,那么可能值得研究一下ExceptionResolver接口。它是一种机制,用于决定如何处理应用程序底层抛出的所有未被处理的异常。它为您提供了最后一次基于抛出的异常显示不同视图的机会。

票数 7
EN

Stack Overflow用户

发布于 2009-05-14 17:58:49

您只想访问视图中的原始异常信息吗?如果是这样的话,您应该能够在RuntimeException上调用RuntimeException()来获取导致它的底层检查异常。否则,您将需要向使用SimpleJdbcTemplate的方法添加一个“抛出”声明,捕获DataAccessException并重新抛出已包装的检查异常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/864780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档