在EJB3中处理拦截器中的异常的正确方法是什么?

时间:2010-11-26 09:30:22

标签: java ejb-3.0 interceptor

我想为我的bean使用拦截器,它将检查给定连接令牌的有效性。

如果连接无效,我想抛出一个特殊的异常,如果连接过期,我想发送另一个(TokenExpiredException,类似这样)。这些例外包含在给客户端的界面中。

@AroundInvoke
public Object checkParams(InvocationContext ctx) throws TokenExpiredException, Exception{
    //code to check token
    //...
    throw new TokenExpiredException(); 
}

根据我的尝试,在拦截器中抛出这样的特定异常导致客户端UndeclaredThrowableException。虽然这个例外包括对原因的引用,但它并不是真正理想的,也不能用常规的catch子句来处理。

使用拦截器声明不同的Exception类型的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

我认为没有正确的方法可以做到这一点。方法应该只抛出它们声明的异常,而拦截器不应该添加新的异常。

我的个人案例通过向所有方法抛出的默认异常添加错误代码来解决。