Hybris中的异常处理

Hybris中的异常处理,hybris,Hybris,我正在尝试创建一个新的过滤器,其中在doFilter方法的主体中抛出一个AuthenticationException public void doFilter(...){ if( something ) { throw new AuthenticationException("..."); } } 如果引发异常,我如何处理此异常以避免storefront的服务器错误?Spring中是否有类似于@ControllerAdvice

我正在尝试创建一个新的过滤器,其中在
doFilter
方法的主体中抛出一个
AuthenticationException

public void doFilter(...){
     if( something )
     {
        throw new AuthenticationException("...");
     }
}

如果引发异常,我如何处理此异常以避免storefront的
服务器错误
?Spring中是否有类似于
@ControllerAdvice
的内容?

您需要设置响应http状态,而不是返回异常

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
  final HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
  httpServletResponse.setStatus(401);
  httpServletResponse.sendError(401);
  httpServletResponse.getWriter().write("401 Authentication needed");
}

只是为了说明这一点,在Spring项目中有多种可能如何进行“异常处理”。这里有一个来自baeldung的关于不同解决方案的非常好的文档

现在你问清楚“最好的是在海布里斯”。我想说没有。Hybris只抛出异常。请查看在
BaseSiteCheckFilter
中抛出的
BaseSiteMismatchException
。现在由你决定是否以及如何处理这些问题


但主要的问题是,为什么要在这里使用异常?将响应状态设置为
401

您使用的是哪个Hybris版本?