gpt4 book ai didi

java - EJB 将所有异常包装成 EJBException

转载 作者:搜寻专家 更新时间:2023-10-31 19:54:39 26 4
gpt4 key购买 nike

假设我有一个@Stateless bean:

@Local
public interface A {
public void check() throws MyException {
}

@Stateless
public class AImpl implements A {
public void check() throws MyException {
...
try {
data = getDataFromService();
} catch (RException e) {
throw new MyException(e);
}
}
}

异常(exception)情况:

public class MyException extends Exception{}
public class RException extends RuntimeException{}

当我使用 @EJB 注释将这个 bean 注入(inject)其他类并执行 check() 方法时,我得到了 EJBExceptionMyException 为原因...

public class B {
@EJB private A a;
public void start() {
try {
a.check();
} catch (MyException e) {
e.printStackTrace();
}
}
}

如何让它抛出正确的异常?

有什么办法让它正常工作吗?

有没有什么方法可以让它在不拦截 EJBException 抛出并重新抛出其异常原因的情况下工作?

最佳答案

我假设您的 MyException 扩展了 RuntimeException,因此它是未经检查的异常。在这种情况下,您可以使用 @ApplicationException 注释来注释您的异常。因此,您的异常将是应用程序异常而不是系统异常。当抛出系统异常时,它被封装在EJBException中,但应用程序异常直接抛给客户端。

关于java - EJB 将所有异常包装成 EJBException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27922964/

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