Rest 服务抛出异常:最佳处理方法

2024-04-08

我有一个休息服务,它会抛出异常,我想知道处理这个问题的最佳方法是什么。

所以我有一个休息服务,它可以抛出用户定义的异常,我在 catch 块内捕获该异常并再次抛出该异常!并使用休息框架来捕捉这一点。对于非用户定义的异常也是如此。我认为这会很好,因为我有许多休息服务,并且所有用户定义的异常代码处理都将在同一个地方。

我想知道这是处理休息服务异常的正确方法吗?

我正在使用球衣。




// rest service 
@POST
public void doSomething() {

try {
// ... some piece of code that can throw user defined exception as well as runtime exception
} catch(UserDefinedException e) {
throws new UserDefinedException(e);
} catch(Exception e) {
throws new ServiceException(e);
} 

// Now I have a @Provider to catch this thrown exception 

@Provider
public class UserDefinedExceptionHandler implements
        ExceptionMapper {

    public Response toResponse(UserDefinedException exception) {
        ClientResponse clientResponse = new          ClientResponse();
        ResponseStatus status = new ResponseStatus();

        clientResponse = handleUserDefinedException(exception, status, clientResponse);

        return Response.ok(clientResponse).build();
    }

// similarly for the ServiceException
  

仅在服务器上引发错误 500,不会提供有关错误的详细信息,优雅处理错误的一种方法是将响应数据包装在包含状态和数据的结构中,如果状态为错误,则显示正确的消息。

json 格式是这样的:

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

Rest 服务抛出异常:最佳处理方法 的相关文章

  • @RestController 没有 @ResponseBody 方法工作不正确

    我有以下控制器 RestController RequestMapping value base url public class MyController RequestMapping value child url method Req
  • JVisualVM/JConsole 中的 System.gc() 与 GC 按钮

    我目前正在测试处理 XML 模式的概念验证原型 并围绕一个非常消耗内存的树自动机外部库 我已经获得了源代码 构建 我想绘制 真实峰值 堆 随着模式大小的增加 不同运行的内存消耗 使用的指标符合我的目的并且不会影响问题 或者至少是它的合理近似
  • 使用 GWT 读取非常大的本地 XML 文件

    我正在使用 GWT 构建我的第一个 Java 应用程序 它必须从一个非常大的 XML 文件中读取数据 当我尝试发送对文件中信息的请求时遇到问题 并且我不太确定它是否与文件的大小或我的语义有关 在我的程序中 我有以下内容 static fin
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • Integer.parseInt("0x1F60A") 以 NumberformatException 结束

    我尝试从数据库中获取长字符串内的表情符号代码 格式如下 0x1F60A 所以我可以访问代码 但它将是String 起初 我尝试通过执行以下操作来转换变量tv setText beforeEmo getEmijoByUnicode int e
  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • 什么时候可以在 Java 中使用 Thead.stop() ?

    Thread stop 的 Java 文档听起来好像如果您调用 Thread stop 世界就会终结 已弃用 这种方法本质上是不安全的 停止线程 Thread stop 导致它解锁所有已锁定的监视器 作为未经检查的 ThreadDeath
  • 使用 JUnit 时,有没有办法验证测试方法中是否调用了 try/catch 指令的 Catch 部分?

    例如 如果我想测试以下课程 public class SomeClass public void someMethod try Some code where comething could go wrong catch Exception
  • 需要使用 joda 进行灵活的日期时间转换

    我想使用 joda 解析电子邮件中的日期时间字符串 不幸的是我得到了各种不同的格式 例如 Wed 19 Jan 2011 12 52 31 0600 Wed 19 Jan 2011 10 15 34 0800 PST Wed 19 Jan
  • Java:如何为山区时间创建 TimeZone 对象?

    必须不禁用夏令时 嗯 在这个清单 http en wikipedia org wiki List of tz database time zones在 zoneinfo 时区名称中 有很多声称是 山地时间 找到最适合您想要的那个 然后使用它
  • 使用架构注册表对 avro 消息进行 Spring 云合约测试

    我正在查看 spring 文档和 spring github 我可以看到一些非常基本的内容examples https github com spring cloud samples spring cloud contract sample
  • QuerySyntaxException:无法找到类

    我正在使用 hql 生成 JunctionManagementListDto 类的实际 Java 对象 但我最终在控制台上出现以下异常 org hibernate hql internal ast QuerySyntaxException
  • java库维护数据库结构

    我的应用程序一直在开发 所以偶尔 当版本升级时 需要创建 更改 删除一些表 修改一些数据等 通常需要执行一些sql代码 是否有一个 Java 库可用于使我的数据库结构保持最新 通过分析类似 db structure version 信息并执
  • Spring-ws:如何从没有“Request”元素的 xsd 创建 Wsdl

    尝试为客户端实现 SOAP Web 服务 我需要一个 wsdl 文件来通过soapUI 测试该服务 但正如您在下面看到的 这个 xsd 没有 Request 和 Response 方法 所有请求和响应都被定义为基本 ServiceProvi
  • 最适合“正在进行的作业”的 HTTP 状态代码

    向客户端提供的最合适的 HTTP 状态代码是什么 表示 您的请求很好 但仍在进行中 请稍后在完全相同的位置回来查看 例如 假设客户端提交初始请求以启动繁重的查询 服务器立即返回一个 URL 客户端可以定期轮询该 URL 以获取结果 如果客户
  • Hamcrest Matchers - 断言列表类型

    问题 我目前正在尝试使用 Hamcrest Matchers 来断言返回的列表类型是特定类型 例如 假设我的服务调用返回以下列表 List
  • Resteasy 可以查看 JAX-RS 方法的参数类型吗?

    我们使用 Resteasy 3 0 9 作为 JAX RS Web 服务 最近切换到 3 0 19 我们开始看到很多RESTEASY002142 Multiple resource methods match request警告 例如 我们
  • 如何重新启动死线程? [复制]

    这个问题在这里已经有答案了 有哪些不同的可能性可以带来死线程回到可运行状态 如果您查看线程生命周期图像 就会发现一旦线程终止 您就无法返回到新位置 So 没有办法将死线程恢复到可运行状态 相反 您应该创建一个新的 Thread 实例
  • 洪水填充优化:尝试使用队列

    我正在尝试创建一种填充方法 该方法采用用户指定的初始坐标 检查字符 然后根据需要更改它 这样做之后 它会检查相邻的方块并重复该过程 经过一番研究 我遇到了洪水填充算法并尝试了该算法 它可以工作 但无法满足我对 250 x 250 个字符的数

随机推荐

  • python将文件发送到作为服务运行的tika

    参考这个问题 https stackoverflow com questions 16251436 unable to run java command from cgi我想将 MS Word doc 文件发送到作为服务运行的 tika 应
  • 将子目录分离(移动)到单独的 Git 存储库中

    我有一个Git http en wikipedia org wiki Git 28software 29存储库 其中包含许多子目录 现在我发现其中一个子目录与另一个子目录无关 应该分离到一个单独的存储库 如何在保留子目录中文件的历史记录的同
  • 创建自定义 ODBC 驱动程序

    在我目前的工作中 我们希望实现自己的 odbc 驱动程序 以允许许多不同的应用程序能够作为数据源连接到我们自己的应用程序 现在我们正在尝试权衡根据实施规范开发我们自己的驱动程序的选项 这是巨大的 or使用允许程序员 填充 数据特定部分并允许
  • Docker 链接容器、Docker 网络、Compose 网络 - 我们现在应该如何“链接”容器

    我有一个现有的应用程序 由在同一主机上运行的 4 个 docker 容器组成 它们已通过以下方式连接在一起link命令 然而 在对docker进行了一些升级之后 link行为已被弃用 并且似乎发生了变化 我们遇到的问题是容器现在失去了彼此的
  • 如何使用带有 ARRAY 关键字的 Postgresql GIN 索引

    我想创建GIN使用标量文本列上的索引ARRAY 表达式如下 CREATE TABLE mytab scalar column TEXT CREATE INDEX idx gin ON mytab USING GIN ARRAY scalar
  • cuda中的count3非常慢

    我在 CUDA 中编写了一个小程序 用于计算 C 数组中有多少个 3 并打印它们 include
  • 解析树和语法信息

    有谁知道在哪里可以找到好的在线资源以及如何制作语法和解析树的示例 最好是介绍材料 信息是 n00b 友好的 我自己在 Google 上没有找到任何好的信息 Edit 我正在考虑理论 而不是特定的解析器软件 网上没有 不过也许你应该看看编译器
  • 如何向 XAML 窗口添加多个资源?

    我现在有一个小问题 我不知道如何解决 我想向一个窗口添加两个资源 一个是 XAML 文件样式资源 另一个是 ValueConverter 类 如果我一次只使用一种资源 它们都会起作用
  • 使用 g-signin 按钮,G+ 登录立即将我注销 3 次

    我在 HEAD 中的代码是
  • 将 python 日志记录与 AWS Lambda 结合使用

    正如 AWS 文档所示 import logging logger logging getLogger logger setLevel logging INFO def my logging handler event context lo
  • 如何导入更高一级的模块?

    For app init py abc py mod init py def py 如何从 def py 导入 abc py 导入当前模块父目录中的模块 abc py import os parentdir os path dirname
  • 鼠标移动时放大图像:到达所有角落

    我正在研究缩放功能 此缩放是一个具有 100 窗口大小的固定框 并且位于具有 200 固定框宽度的图像内部 这个缩放需要像这样工作 当光标位于窗口中央时 图像应位于中央 当光标位于右上角时 图像应停留在窗口的右上角 因此可以通过角到达图像
  • 套接字如何既可以连接又可以关闭?

    我正在使用 Java 套接字客户端 如果服务器仍然连接到我的客户端 但它没有发送对我的消息的响应 我最终会收到读取超时异常 在这种情况下 我想测试一下是否应该重新连接我的套接字 或者只是保留它并重新使用它 我使用这个条件 if socket
  • .htc 文件在旧版 IE 中是否是像 CSS3 那样的圆角的良好做法?

    我正在尝试使用 CSS3 制作带有圆角的简单 html 按钮 但对于 IE 我使用 htc 文件作为圆曲线 使用 htc 文件是好习惯还是坏习惯 我无法判断使用这个 html 文件 我的另一个担心是渐进增强是否允许使用 htc 文件 还请告
  • 用python计算时间序列数据的概率分布

    我有一个关于概率分布函数的问题我有一个时间序列数据 我想计算不同时间窗口内数据的概率分布 我开发了以下代码 但我找不到该函数的概率分布值 a pd DataFrame 0 0 21 660332407421638 20 5642894358
  • 如何在 RHEL 虚拟机上运行 minikube?

    有没有办法在 RHEL VM 虚拟机管理程序 上运行 Kubernetes minikube 或者还有其他方法可以使用单个虚拟机尝试 Kubernetes 吗 要在 RHEL CentOS VM 上运行 minikube 您需要在安装 mi
  • 在 CodeRush 中查找键绑定定义

    如果我部署了社区插件并在 CodeRush 中设置了键绑定 那么我现在如何找到我在选项对话框 树层次结构中归档它的位置 打开 CodeRush 选项屏幕 选择DevExpress 选项从菜单或点击Ctrl Shift Alt O 然后找到I
  • 尝试从私有实例调用模板方法时出现编译器错误[重复]

    这个问题在这里已经有答案了 如果您已经知道答案 这个问题只是另一个问题的重复 请注意我的后续问题 如果存在同名的不相关的全局模板函数 为什么不需要模板关键字 https stackoverflow com questions 2389249
  • 正则表达式失败时非常慢

    我有一个正则表达式 应该验证字符串是否由空格分隔的字符串组成 正则表达式工作得很好 好吧 它最后允许有一个空格 但这不是他的问题 但是当验证失败时需要很长时间 正则表达式如下 w 0 当尝试使用字符串进行验证时 this is SAMPLE
  • Rest 服务抛出异常:最佳处理方法

    我有一个休息服务 它会抛出异常 我想知道处理这个问题的最佳方法是什么 所以我有一个休息服务 它可以抛出用户定义的异常 我在 catch 块内捕获该异常并再次抛出该异常 并使用休息框架来捕捉这一点 对于非用户定义的异常也是如此 我认为这会很好