nan*_*no7 6 java spring hibernate exception transactional
我正致力于使用Spring 3和Hibernate 3.6开发Web应用程序.我对@TransactionalAnnotation和代码的结构有一些问题.
- >当我使用@Transactional(使用Spring进行事务管理)时,我是否必须@Transactional在调用它们时使用try/catch 包围注释方法?
例如,当我得到一个加载,更改并返回一个对象的方法然后我从另一个类调用它时:我是否必须使用try/catch包围调用?也许出了点问题,没有返回任何对象,数据库连接失败..我不知道.
到目前为止,我认为会@Transactional关注所有可能发生的异常,并在发生错误时回滚此事务中的每个操作.但如果它发生,我必须以某种方式通知用户.当我在try-block中调用transactional-method并回滚它时,catch块被激活了?我可以告诉用户"出了问题".否则用户可能不会被告知?
或者是否足以检查是否有返回的对象(如果/ else),那么我不需要try/catch?我是新的,我想听听其他结构如何编码.谢谢 :-)
使用 HandlerExceptionResolvers 和 @ExceptionHandlers 在 Spring 中处理异常非常简单。我倾向于专门使用@ExceptionHandler。
您可以使用@ExceptionHandler来处理特定的异常,而不是在 try-catch 块中自行处理。
如果用户想要的资源未找到,而您想要发送 404。
@ExceptionHandler(NotFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public void handleNotFoundException(NotFoundException exc) {
// log something.
}
Run Code Online (Sandbox Code Playgroud)
如果服务器出现问题,您想要发送 500
@ExceptionHandler(SomeException.class)
public void handleException(SomeException exc, WebRequest request, HttpServletResponse response) {
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Sorry dude, my server broke");
}
Run Code Online (Sandbox Code Playgroud)
您还应该严格处理异常。一般来说,你不应该这样做@ExceptionHandler(Exception.class),而且我也相信它会按顺序工作,所以如果你确实处理一般异常,它应该是类中的最后一个方法。
| 归档时间: |
|
| 查看次数: |
8083 次 |
| 最近记录: |