当前位置: 首页 > 知识库问答 >
问题:

特定注释方法的Spring Boot异常处理

万俟震博
2023-03-14

我一直在研究ControllerAdvice和ExceptionHandler注释,但我认为这两个注释都不能按照我们的预期使用。ControllerAdvice只能覆盖整个控制器,因此任何异常处理也将覆盖非Ajax方法。类似地,ExceptionHandler注释将处理来自这两种类型方法的异常。

目前的想法是将ajax和CRUD这两种类型的方法拆分为单独的控制器。还有别的办法吗?

共有1个答案

鲍建业
2023-03-14

我认为这在Spring中并不是那么容易/直接(或者至少就我目前的Spring知识而言)。

我们希望能够用一个注释来注释我们所有的ajax方法

除了将ajaxMethods分离到另一个控制器之外,我还可以想到另一种实现这一点的方法。

2.不要在controller中处理此异常,只要在ajax方法中遇到异常时抛出它即可。

  try{
         //.... 
      }catch(Exception ex){
          throw new myAjaxException("this is myAjaxException blah blah blah");
      }

3.通过如下实现HandlerExceptionResolver截取myAjaxException。

在DispatcherServlet的应用程序上下文中声明的实现HandlerExceptionResolver的任何Spring bean都将用于拦截和处理MVC系统中引发的、未由控制器处理的任何异常。

public class AjaxExceptionResolver implements HandlerExceptionResolver {

   public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex);
  if (ex instanceof myAjaxException) {
              //return response to UI
    }

  }
 类似资料:
  • 如何定制spring中注释的异常处理? 我有Cron作业,这些作业将在服务器(Tomcat 6)中触发,当出现任何异常时,我需要进行一些处理。 Spring版本3.2 Tomcat服务器6

  • 问题内容: 假设我有一个抛出某种Exception的方法。引发异常的代码位于访问外部服务的第三方库中。我有一些课程可以很好地处理外部服务,并且有很多异常处理程序可以处理潜在的问题。我遇到的问题是我可能有很多异常,但是如果有一个动作,并且可能有大量尝试/捕获块,我可能只需要执行几个动作之一。异常的类型甚至可能不相关,或者不同的方法可能会抛出相同类型的异常,但是根据抛出该异常的方法,需要采取不同的操作

  • 我有一个资源类,它本身与内部服务进行对话。此资源充当服务的rest API。服务层可以抛出意外异常,因此资源应该处理那些已处理的意外异常并将其记录下来。我正在使用dropwizard框架,它反过来又使用jersey。事情是这样的。 这里的问题是,我必须对每个REST apiendpoint执行完全相同的异常处理。我可以为这个特定的资源进行某种类型的异常映射,以便将所有的处理逻辑和日志记录放在那里吗

  • 问题内容: 假设我有这个注释类 那么,有没有一种方法可以查看对象,使用@MethodXY注释“查找”该方法,其元素x = 3,y = 2,并调用它? 谢谢 问题答案: 这是一个方法,该方法返回带有特定注释的方法: 可以轻松修改它以满足您的特定需求。请注意,提供的方法会遍历类层次结构,以查找带有所需批注的方法。 这是满足您特定需求的方法: 要调用找到的方法,请参考教程。这里的潜在困难之一是方法参数的

  • 我有两个模块,一个从rest模板调用另一个。(管理员调用notifServer)notifServer有一个用Async注释的方法。我想在该方法中抛出一个异常,但管理员获取响应太快,并且无法在admin中捕获异常方法。 我是spring和@Async进程的新成员。我已经尝试将响应主体从NotifServer映射到C的CompletableFuture。类 。但我仍然没有得到错误响应。 此代码来自管

  • 本文向大家介绍java基于spring注解AOP的异常处理的方法,包括了java基于spring注解AOP的异常处理的方法的使用技巧和注意事项,需要的朋友参考一下 一、前言 项目刚刚开发的时候,并没有做好充足的准备。开发到一定程度的时候才会想到还有一些问题没有解决。就比如今天我要说的一个问题:异常的处理。写程序的时候一般都会通过try...catch...finally对异常进行处理,但是我们真的