Spring MVC ExceptionHandler 实现平静和正常

2024-02-15

我想处理正常请求和休息/ajax 请求的异常。这是我的代码,

@ControllerAdvice
public class MyExceptionHandler {

    @ExceptionHandler(Exception.class)
    public ModelAndView handleCustomException(Exception ex) {

        ModelAndView model = new ModelAndView("error");
        model.addObject("errMsg", ex.getMessage());
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        ex.printStackTrace(pw);
        sw.toString();
        model.addObject("errTrace", sw);
        return model;

    }

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public String handleAjaxException(Exception ex) {
        JSONObject model = new JSONObject();
        model.put("status", "error");
        model.put("errMsg", ex.getMessage());
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        ex.printStackTrace(pw);
        sw.toString();
        model.put("errTrace", sw);

        return model.toString();
    }
}

这会给我一个错误,因为我不能有 @ExceptionHandler(Exception.class) 两次。那么解决方案是什么?


查看@ControllerAdvice的配置:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/ControllerAdvice.html http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/ControllerAdvice.html

因此,您可以创建两个类(错误处理程序)并指定注释/basePackages/assignibaleTypes

例如,对于 REST(ajax),为控制器使用 @RestController 注释,您可以处理如下错误:

@ControllerAdvice(annotations = RestController.class)
public class MyExceptionHandler {

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public String handleAjaxException(Exception ex) {
        ...
    }
}

对于其他情况,它可以是带有注释的错误处理程序

@ControllerAdvice(annotations = Controller.class)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring MVC ExceptionHandler 实现平静和正常 的相关文章

  • SpringMVC form:options items 属性:它到底期望什么?

    我对 SpringMVC 以及 jstl 来说 还是个新手 我正在尝试填充从对象列表中选择的选项 我找到了一种使用 c forEach 来做到这一点的方法 但我一直认为必须有一种方法可以使 form options 方法起作用 我浏览了一下
  • 如何单独捕获这些异常?

    我正在编写一个与 Quickbooks 交互的 Python 程序 连接到 Quickbooks 时 根据问题的不同 我可能会遇到以下两个常见异常之一 pywintypes com error 2147352567 Exception oc
  • 部署 Grails 应用程序时出错 - 初学者

    我在部署 Grails 应用程序时遇到问题 一切都在本地测试环境中运行 ERROR localhost startStop 1 错误 context GrailsContextLoader 错误 初始化应用程序 使用名称创建 bean 时出
  • .NET 迭代器包装抛出 API

    我有一个带有 API 的类 它允许我请求对象 直到它抛出一个IndexOutOfBoundsException 我想将它包装到一个迭代器中 以便能够编写更清晰的代码 但是 我需要捕获异常以停止迭代 static IEnumerable It
  • ASP.NET Web Api 2 中的异常处理

    Problem 我需要处理 Web api 2 异常并返回一个具有正确状态代码的丰富对象 401 表示未经授权 404 表示 ContentNotFound 等 以及一些额外信息作为内容 此外 我需要内容看起来像序列化的Exception对
  • 如何向我的 Spring MVC REST 服务添加错误?

    如果用户没有输入我正在编码的两个名称 我如何更改 更新来自 Spring MVC 的以下 REST 调用以返回错误 未找到 RequestMapping value name method RequestMethod GET Respons
  • 我们如何使用 thymeleaf 绑定对象列表的列表

    我有一个表单 用户可以在其中添加任意数量的内容表对象这也可以包含他想要的列对象 就像在 SQL 中构建表一样 我尝试了下面的代码 但没有任何效果 并且当我尝试绑定两个列表时 表单不再出现 控制器 ModelAttribute page pu
  • 未找到带有 URI 的 HTTP 请求的映射 [/favicon.ico]

    我不记得我对代码进行了哪些更改 但每当我单击网络上的任何链接时 它都会显示以下内容 WARN org springframework web servlet PageNotFound No mapping found for HTTP re
  • Spring @ContextConfiguration

    我正在运行下一个测试 import static org junit Assert assertEquals import org junit Test import org junit runner RunWith import org
  • 如何在Spring中配置@Valid上的直接字段访问?

    我怎么知道spring web无需使用 getter setter 即可验证我的 dto PostMapping path test public void test Valid RequestBody WebDTO dto public
  • Spring RESTful控制器方法改进建议

    我是 Spring REST 和 Hibernate 的新手 也就是说 我尝试组合一个企业级控制器方法 我计划将其用作未来开发的模式 您认为可以通过哪些方法来改进 我确信有很多 RequestMapping value user metho
  • 如何对嵌套列表对象进行 Hibernate 验证?

    我需要验证存储在表单 bean 对象列表中的对象 下面是我的表单 bean 对象 public class Role implements java io Serializable Fields private int roleId Not
  • Errors/BindingResult 参数应在模型属性、@RequestBody 或 @RequestPart 参数之后立即声明

    我通过剖析示例应用程序来自学 Spring 然后到处添加代码来测试我在剖析过程中开发的理论 在测试添加到 Spring 应用程序中的一些代码时 我收到以下错误消息 An Errors BindingResult argument is ex
  • 无法以编程方式反序列化 SOAP 消息

    当我尝试反序列化肥皂消息时 出现以下异常 我这样做是因为我有想要在测试中重用的响应文件 我无法使用真正的服务等 因为它不适合我们拥有的测试框架的架构 Test MyUnitTestMethod failed System InvalidOp
  • Spring Security 自定义过滤器

    我想自定义 Spring security 3 0 5 并将登录 URL 更改为 login 而不是 j spring security check 我需要做的是允许登录 目录并保护 admin report html 页面 首先 我使用教
  • 通过等待任务或访问其 Exception 属性都没有观察到任务的异常

    这些是我的任务 我应该如何修改它们以防止出现此错误 我检查了其他类似的线程 但我正在使用等待并继续 那么这个错误是怎么发生的呢 通过等待任务或访问其 Exception 属性都没有观察到任务的异常 结果 未观察到的异常被终结器线程重新抛出
  • Spring saml:密钥太长,无法展开:invalidkeyexception

    我的机器上只安装了一个 JDK 并且代码指向同一个 JDK 我在两个文件夹 C Program Files Java jdk1 6 0 25 jre lib security 和 C Program Files Java jre6 lib
  • 为什么我不能在 super() 调用周围使用 try 块?

    因此 在 Java 中 构造函数的第一行必须是对 super 的调用 无论是隐式调用 super 还是显式调用另一个构造函数 我想知道的是 为什么我不能在它周围放置一个 try 块 我的具体情况是我有一个模拟课程用于测试 没有默认的构造函数
  • SQLiteException - 仅发生在某些设备上

    我最近向市场发布了一个应用程序 从开发者控制台来看 我的用户中大约有 1 2 遇到了这个问题 1 2 的比例很小 但人们更倾向于在某些内容不起作用时留下评论 而不是在它起作用时留下评论 这可能会对下载产生负面影响 不幸的是 开发人员控制台仅
  • Spring MVC:如何在 JSP 中获取视图名称?

    是一种在 JSP 中访问视图名称的方法 profile在下面的示例中 或者我需要将此名称添加到模型中 RequestMapping value user account method RequestMethod GET return pro

随机推荐

  • 是否有 OAuth2 与 WebFlux 的工作示例

    我正在尝试将 OAuth2 添加到 WebFlux 但找不到任何工作示例 为了实现自己的授权服务器 我使用这样的代码 EnableAuthorizationServer Configuration public class ServerAu
  • Facebook SDK:FBLoginView 重新授权发布流

    使用 FBLoginView 时调用 initWithReadPermission 后 我遇到重新授权发布流的问题 我尝试在委托函数内部调用 我可以在其中获取用户信息 在下一个对话框请求发布流权限后 应用程序向我抛出一个异常 com fac
  • SharePoint 初学者用户教程有什么好处? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 好吧 我的任务是为一个政府内部网站创建一个 wss v3 0 网站 但内部 SharePoint 经验很少 尽管这是一个 IT 部门 所以
  • 如何提取一些单元测试来分离gradle测试任务?

    假设我想将 Robolectric 测试与普通单元测试分开 并将它们作为单独的 gradle 任务运行 是否可以 我已经设法从单元测试中排除不需要的测试 android testOptions unitTests all exclude p
  • Linux内核AIO,开放系统调用

    为什么 Linux 内核 AIO 不支持异步 开放 系统调用 因为 打开 可能会长时间阻塞文件系统 不是吗 首先 这是一个非常好的 合理的问题 不幸的是 它可能会赶走比我更有知识的人 AFAICT 没有good原因 您设法挖掘的讨论是相关的
  • Rails 路由:我缺少什么?

    我的应用程序有票证 票证可以 解决 我可以通过 AJAX POST 到 resolve 操作 没有任何问题 但我无法通过普通的 HTML 表单 POST 我明白了No route matches tickets 321 resolve HT
  • 抽象泛型类采用本身派生自该类的类型参数

    您认为创建一个将派生自自身的类作为类型参数的抽象泛型类是可接受的还是不好的做法 这允许抽象泛型类操作派生类的实例 特别是根据需要创建派生类的 new 实例的能力 并且可以帮助避免在派生自它的具体类中重复代码 如果 不好 您更喜欢什么替代方案
  • 谷歌地图 API v3:在点击折线事件上的两个现有点之间的折线上添加点

    如何在单击折线事件上的两个现有点之间的折线上添加点 谢谢你 如果你只是在谈论一个Polyline只有 2 个点 您可以使用 a 的中心LatLngBounds http code google com apis maps documenta
  • C++ 构造函数中可移动类型的右值

    我正在使用 C 11 并尝试构造一个拥有可移动类型的类 如下所示 class foo std istream input public foo std istream in input in 然后实例化该对象 foo var1 std if
  • Java For-Each循环:排序顺序[重复]

    这个问题在这里已经有答案了 java for each 循环是否保证在列表上调用时元素将按顺序呈现 在我的测试中似乎确实如此 但我似乎找不到任何文档中明确提到的这一点 List
  • 为什么 NetBeans 找不到我的某些项目的 CopyLib?

    今天早上我遇到了一个棘手的问题 我花了几个小时试图追踪它 我继承了两个 NetBeans 项目的一些代码 A and B 他们都成功构建并运行 没有复杂的 Ant 构建任务 只是默认的 IDE 设置 这两个项目共享大量代码 因此我将其分解为
  • 如何从 Rails 模型中删除列?

    我需要从我已经创建的 Rails 模型中删除几列 并且该模型中有一些行条目 怎么做 任何包含修改 Rails 中架构的详细信息的链接吗 我正在使用 Rails 版本 3 要删除数据库列 您必须生成迁移 script rails g migr
  • Jquery:连接两个元素的值

    尝试在 Jquery 中实现一些目标有点卡住了 想知道是否有人可以提供帮助 我正在创建自己的就地编辑功能 您可以在其中单击编辑按钮 然后我的定义列表的内容将被交换为表单 预填充数据 如同this http 15daysofjquery co
  • 函数和 powershell 远程处理

    我有一个运行良好的脚本 但我想提高我的 powershell 知识 并想知道是否有更简单的方法来做到这一点 我的脚本的一部分连接到服务器并拉回服务器上的文件和大小列表并将其导出到 csv 我找到了一个函数 Exportcsv 它允许我使用早
  • 如何在 React js - JSX 中动态创建输入文本字段?

    我对 ReactJS 还很陌生 我遇到了一个场景 我必须创建 6 个彼此非常相似的输入字段 现在我的类渲染方法中有类似的东西 render return div p p div
  • 如何使“旧式”异步方法可等待

    如果我有一个带有回调的异步方法 MyMethodAsync
  • 如何从 jar 库创建 OSGi 包?

    如何从 jar 库创建 OSGi 包 如果您使用的是 eclipse 有一个向导 它允许您选择多个 jar 库并创建包含这些 jar 的插件项目 即 OSGi 包 你可以在这里找到它 File gt New gt Other gt Plug
  • 从 PL/SQL 调用/使用 JMS

    是否可以从 PL SQL 调用 使用 JAVA 消息服务 JMS 我知道我们可以从 pl SQL 调用 java 但是调用 java 与调用 JMS 队列或 JMS 主题不同 因为 JMS 依赖于 JNDI 资源命名 当我们使用基于 JND
  • Python 大量迭代失败

    我写的简单蒙特卡罗 计算 http math fullerton edu mathews n2003 montecarlopimod htmlPython 程序 使用多处理模块 它工作得很好 但是当我为每个工作人员传递 1E 10 次迭代时
  • Spring MVC ExceptionHandler 实现平静和正常

    我想处理正常请求和休息 ajax 请求的异常 这是我的代码 ControllerAdvice public class MyExceptionHandler ExceptionHandler Exception class public M