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

endpoint的异常处理组件

邬英武
2023-03-14

我正在使用Spring。我的应用程序中有几个终结点。基本上,每个endpoint返回一个不同的对象。该应用程序由多个层组成。无论在哪里发生错误,对我们来说,将错误传播到endpoint的调用方都很重要。我们的方法 就是抛出一个异常,错误发生,它应该被捕获在endpoint中,endpoint应该根据异常中的信息改变响应的状态码。我们赶上异常,因为我们不想将肥皂错误抛给调用方

我们已经到了架构中的一个点,我们不希望endpoint管理异常。我们认为应该在某种拦截器中或者由AOP来完成。重要是,在“外部异常处理组件”处,我可以完全获得异常及其属性,并基于此,不管调用了什么endpoint,都可以获得endpoint的返回类型对象,并通过基于异常填充一些适当的字段(可能通过一些java反射)来返回它

我的第一个方法是使用SOAP拦截器,但我认为根据我的需要它是有限的。我正在研究AOP,有什么想法吗?

共有1个答案

支彭亮
2023-03-14

在我看来,这是AOP的完美方案。但问题出在哪里呢?:)您可以在服务方法(而不是endpoint)上创建类型@Around方面,然后在尝试捕获块内调用 joinPoint.catch()。捕获异常并返回所需的内容:P通过使用 AOP API,您可以检查返回类型(参数 .) 应该是什么。基本上你需要的一切都:)

 类似资料:
  • 下面是我的Restendpoint。我使用Long作为userId的数据类型,通过如下所示的邮递员调用endpoint时工作正常,我能够显式处理异常。 本地主机:8080/订单服务/保存订单/1 但是当我用字符串类型参数这样调用时, 本地主机:8080/订单服务/保存订单/abc Spring引导隐式处理异常并给出400个错误请求。 我想要的是当参数的变量类型不等于long时抛出一条自定义错误消息

  • 我不知道该怎么办。 当我试图从解析器获取语法错误的数量时,它显示0。 编辑: 它返回null。

  • Blade 内置了 异常处理器,在开发者模式下它会将异常输出在前端页面,并在控制台打印堆栈信息,生产环境只打印在控制台。 有些时候不满足我们的需求,这时候就需要自定义异常处理了,比如针对某个自定义的异常进行特殊处理。 我们用一个例子来解释如何操作。 定义了一个名为 TipException 的运行时异常类,用于输出错误消息到前台。 按照上面对异常的处理情况这个异常的堆栈信息会被输出在控制台,生产环

  • 任何方法都可以抛出不同类型的异常。这些异常可能是需要应用程序重新部署来解决的编程错误,或者是不需要重新部署但可以解决的暂时性错误。 Hangfire可以处理所有内部的(属于Hangfire本身)和相关的外部方法(任务,过滤器等)的异常,因此不会导致整个应用程序被关闭。所有内部异常都被记录(所以不要忘记 启用日志),最糟糕的情况是导致后台任务被暂停并延时重试 10 次。 当Hangfire遇到在执行

  • 我们在编写程序的时候,经常需要对异常情况做处理。比如,当一个数试图除以 0 时,我们需要捕获这个异常情况并做处理。你可能会使用类似 if/else 的条件语句来对异常情况做判断,比如,判断除法的分母是否为零,如果为零,则打印错误信息。 这在某些简单的情况下是可以的,但是,在大多数时候,我们应该使用 Python 的异常处理机制。这主要有两方面的好处: 一方面,你可以选择忽略某些不重要的异常事件,或

  • 异常处理可以使程序在流程上更加完善。 在 JavaScript 中可以使用 throw 抛出异常,使用 try ... catch 捕获错误。 1. throw throw 语句用来抛出一个用户自定义的异常。(MDN) throw 用于抛出一个异常,这种异常通常是程序出现了不符合预期的错误。 alert('出错前'); throw '发生了一个错误!'; alert('出错后'); 当出现