我想为我的bean使用拦截器,它将检查给定连接令牌的有效性。
如果连接无效,我想抛出一个特殊的异常,如果连接过期,我想发送另一个(TokenExpiredException,类似这样)。这些例外包含在给客户端的界面中。
@AroundInvoke
public Object checkParams(InvocationContext ctx) throws TokenExpiredException, Exception{
//code to check token
//...
throw new TokenExpiredException();
}
根据我的尝试,在拦截器中抛出这样的特定异常导致客户端UndeclaredThrowableException
。虽然这个例外包括对原因的引用,但它并不是真正理想的,也不能用常规的catch子句来处理。
使用拦截器声明不同的Exception类型的正确方法是什么?
答案 0 :(得分:1)
我认为没有正确的方法可以做到这一点。方法应该只抛出它们声明的异常,而拦截器不应该添加新的异常。
我的个人案例通过向所有方法抛出的默认异常添加错误代码来解决。