gpt4 book ai didi

java - AspectJ 如何捕获 NoResultException 并返回 null

转载 作者:行者123 更新时间:2023-12-01 14:48:54 26 4
gpt4 key购买 nike

我想使用 AspectJ 捕获 NoResultException 并返回 null。
(显然我是一个方面菜鸟)

这是执行查询的方法:

@Override
public Company getCompanyBySomeNumber(String someNumber) {
TypedQuery<Company> query = em.createQuery("select c from Company c where c.someNo = ?1", Company.class);
query.setParameter(1, someNumber);
return query.getSingleResult();

我有数百个这样的调用,我不想在每个调用中都使用 try/catch 来将 NoResultException 更改为 null 结果。

所以我想编写一个方面来捕获异常并将结果更改为null

这是方面代码(请注意我正在使用注释)。像这样的事情:

@Aspect 
public class NullifyNoResultException {

@Pointcut("execution(my.namespace.where.the.queries.are * *Throwable(..))")
void throwableMethod() {}

@Around("throwableMethod()")
public void swallowThrowing(ProceedingJoinPoint pjp) {
try {
pjp.proceed();
} catch (NoResultException nre) {
//TODO change the return value to null

如何将返回值更改为 null

最佳答案

您是否尝试将方法更改为:

@Around("throwableMethod()")
public Object swallowThrowing(ProceedingJoinPoint pjp) {
try {
return pjp.proceed();
} catch (NoResultException nre) {
return null;
}
}

关于java - AspectJ 如何捕获 NoResultException 并返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15088279/

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