gpt4 book ai didi

spring - 如何将数据传递给异常处理程序?

转载 作者:行者123 更新时间:2023-12-03 11:27:35 26 4
gpt4 key购买 nike

我找到了一个教程来管理来自 this site 的异常.所以这是我的处理程序:

@Controller
@RequestMapping("/adminrole")
public class AdminRole {

...

@ExceptionHandler({org.hibernate.exception.ConstraintViolationException.class})
public ModelAndView handlePkDeletionException(Exception ex) {

ModelAndView model = new ModelAndView("errorPage");

model.addObject("message", "customised message with data to display in error page");

return model;

}

}

现在我想将一些数据(例如导致异常的主键的列名)传递给处理程序,以便在错误页面中显示自定义消息。那么如何将这些数据传递给处理程序呢?

最佳答案

将您自己的数据传递给 @ExceptionHandler方法,你需要捕捉framework exceptions在服务层,抛出自己的custom exception通过包装附加数据。

服务层:

public class MyAdminRoleService {
public X insert(AdminRole adminRole) {
try {
//code
} catch(ConstraintViolationException exe) {
//set customdata from exception
throw new BusinessException(customdata);
}
}
}

Controller 层:
@Controller
@RequestMapping("/adminrole")
public class AdminRole {

@ExceptionHandler({com.myproject.BusinessException.class})
public ModelAndView handlePkDeletionException(BusinessException ex) {
String errorMessage = ex.getErrorMessage();
ModelAndView model = new ModelAndView("errorPage");

model.addObject("message", errorMessage);

return model;

}
}

附注:我仅以 ConstraintViolationException 为例,但您可以将相同的概念应用于要为其添加额外数据的任何框架异常。

关于spring - 如何将数据传递给异常处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40345034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com