gpt4 book ai didi

java - spring中@Named类的全局异常处理

转载 作者:太空宇宙 更新时间:2023-11-04 14:50:03 24 4
gpt4 key购买 nike

我想处理使用 @Named 注释的一个类中的一组异常。

我正在使用 AKKA actor 来实现并发。还使用 hibernate 。

在我的 Akka actor 类中,我调用 hibernate 方法来执行插入操作。我想知道如何全局处理所有参与者类中的异常。我可以使用 @ExceptionHandler 和 @ControllerAdvice 来做到这一点。但我相信它只在 @Controller 层有效。

示例代码如下:

@Named("SaveDepartmentService") 
public class SaveDepartmentService extends BaseCommonService {

@Autowired
IDepartmentRepository departmentRepository;

@Override
public PartialFunction<Object, BoxedUnit> receive(){
return ReceiveBuilder
.match(Department.class, c->createOrUpdateDepartment(c))
.build()
.orElse(matchAny());
}

private void createOrUpdateDepartment(Department dept){
// try{
departmentRepository.insertOrUpdate(dept);
// }catch (ConstraintViolationException e){
// System.out.println("-------------------------------");
// e.printStackTrace();
// wrap the exception and send as
// sender().tell("Constarint_violation",self());
//}
sender().tell(dept, self());
} }

我想在我的参与者中处理 ConstraintViolationException 并用消息进行响应(例如:sender().tell("CONSTRAINT_VIOLATION", self());)。我可以通过在 catch block 中处理它来完成同样的事情,但我需要在所有 actor 类中复制它。

有什么办法可以像@ControllerAdvice一样处理它吗?

最佳答案

您可以使用default exception handler .

By setting the default uncaught exception handler, an application can change the way in which uncaught exceptions are handled (such as logging to a specific device, or file) for those threads that would already accept whatever "default" behavior the system provided.

但是 CDI-Beans 和非 CDI-Beans 之间没有区别(顺便说一句:我用它来自动提高 Stacktraces 中所有类的日志记录级别)

关于java - spring中@Named类的全局异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23903427/

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