Dubbo 接口异常处理逻辑

2023-11-18

API 接口中抛出的异常类型,有一系列的规则,代码在 ExceptionFilter 的 onResponse 中。

1. 如果是受检异常(非Runtime)就直接抛出

这是因为如果是受检异常,接口定义的 throws 中需要涵盖,调用端需要捕获该异常,该异常一定能访问到。

2. RuntimeException 并且接口 throws 时

这种情况下,接口指明抛出的异常,调用端也能获取该异常,因此可以直接抛出。

3. 异常和接口在一个 jar 包时

此时也可以直接抛出。

4. java. 和 javax. 前缀的异常时

这些都是 JDK 自带的,可以直接抛出。

5. dubbo RpcException 及其子类时

调用方也集成了 dubbo,因此可以直接抛出。

6. 其他情况

如果不满足前 5 个规则,就会被包装成统一的异常,导致异常信息变得冗长模糊。

7. 问题

dubbo 上述逻辑只在 A 调用 B 这种简单调用时有效,如果出现了 A->B->C,当 C 抛出异常时,B 能够正常接收,如果是 Runtime 类型的,B 没有处理时,会直接抛给 A,但是此时 B 抛出的异常和 B 接口没有任何关系,这就导致 B 在过滤器中进入第 6 种情况,导致 A 接收到的异常变得模糊。

如果系统基础包中定义了统一的异常类,在跨多次服务调用时仍然无法使用,想要避免问题只能从前 6 条规则入手。

更多学习方式交流关注WX公众号 java微技术

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

Dubbo 接口异常处理逻辑 的相关文章

  • 在Maven中生成Version.java文件

    我有一个使用 Ant 脚本构建的 Java 项目 我正在尝试将项目转换为 Maven 其中一项任务生成一个名为 Version java 的 Java 源文件 其中包含编译时间戳的静态字符串表示形式 如下所示 package com foo
  • 非易失性领域的出版与阅读

    public class Factory private Singleton instance public Singleton getInstance Singleton res instance if res null synchron
  • 使用 Exec Maven 插件分叉 Java,而不使用“exec”目标

    来自文档 https www mojohaus org exec maven plugin exec exec在单独的进程中执行程序和Java程序 exec java在同一虚拟机中执行 Java 程序 我想 fork 一个 java 程序
  • 无法使用 datastax java 驱动程序通过 UDT 密钥从 cassandra 检索

    我正在尝试使用用户定义的类型作为分区键将对象存储在 cassandra 中 我正在使用 datastax java 驱动程序进行对象映射 虽然我能够插入到数据库中 但无法检索该对象 如果我更改分区键以使用非 udt 例如文本 我就能够保存和
  • 我对线程失去了理智

    我想要这个类的对象 public class Chromosome implements Runnable Comparable
  • Java AES 256 加密

    我有下面的 java 代码来加密使用 64 个字符密钥的字符串 我的问题是这会是 AES 256 加密吗 String keyString C0BAE23DF8B51807B3E17D21925FADF273A70181E1D81B8EDE
  • ThreeTen 向后移植与 JSR-310 的比较

    由于某些原因 我们现在无法使用 java 8 我们仍然停留在 java 7 上 不过 我想使用新的JSR 310 date time APIs现在 使用官方向后移植 ThreeTen http www threeten org threet
  • 在光标所在行强制关闭!

    嘿 我正在尝试创建一个应用程序来查找存储在 SQlite 数据库中的 GPS 数据 但我面临一个问题 我构建了一个 DbAdapter 类来创建数据库 现在我尝试使用以下函数从另一个类获取所有数据上的光标 public Cursor fet
  • 在 Spring 中为 @Pathvariable 添加类级别验证

    在发布这个问题之前 我已经做了很多研究并尝试了很多可用的解决方案 这是我陷入的棘手情况 我有一个 Spring 控制器 它有多个请求映射 它们都有 PathVariables 控制器如下所示 Controller EnableWebMvc
  • 如何更改 Swagger-ui URL 前缀?

    我正在使用 Springfox Swagger2 和 Spring boot 1 5 9 我可以通过此链接访问 swagger UI http localhost 8090 swagger ui html http localhost 80
  • 如何使用双重调度来分析图形基元的交集?

    我正在分析图形基元 矩形 直线 圆形等 的交互并计算重叠 相对方向 合并等 这被引用为双重调度的一个主要示例 例如维基百科 http en wikipedia org wiki Double dispatch 自适应碰撞算法通常要求 不同的
  • 数据库中的持久日期不等于检索日期

    我有一个具有 Date 属性的简单实体类 此属性对应于 MySQL 日期时间列 Entity public class Entity Column name start date Temporal TemporalType TIMESTAM
  • 文本视图不显示全文

    我正在使用 TableLayout 和 TableRow 创建一个简单的布局 其中包含两个 TextView 这是代码的一部分
  • 我所有的 java 应用程序现在都会抛出 java.awt.headlessException

    所以几天前我有几个工作Java应用程序使用Swing图书馆 JFrame尤其 他们都工作得很好 现在他们都抛出了这个异常 java awt headlessexception 我不知道是什么改变了也许我的Java版本不小心更新了 谢谢你尽你
  • 用于请求带有临时缓存的远程 Observable 的 RxJava 模式

    用例是这样的 我想暂时缓存最新发出的昂贵的Observable响应 但在它过期后 返回到昂贵的源Observable并再次缓存它 等等 一个非常基本的网络缓存场景 但我真的很难让它工作 private Observable
  • Spring Data Rest 多对多 POST

    首先 让我解释一下我的用例 这非常简单 有一个用户实体和一个服务实体 我使用 UserService 作为连接实体 连接表 在用户和服务之间建立多对多关联最初 会有一些用户集和一些服务集 用户可以在任何时间点订阅任何服务 在这种情况下 将向
  • 确定 JavaFX 中是否消耗了事件

    我正在尝试使用 JavaFX 中的事件处理来做一些非滑雪道的事情 我需要能够确定手动触发事件后是否已消耗该事件 在以下示例中 正确接收了合成鼠标事件 但调用 Consumer 不会更新该事件 我对此进行了调试 发现 JavaFX 实际上创建
  • 什么是 Java2D 处理程序线程?

    我创建了一个使用 Hibernate 的示例 java 应用程序 当我进行线程转储时 我观察到一个名为 Java2D Disposer 的奇怪线程 有人能告诉我该线程的功能吗 AWT 系统中的某些实体需要最终确定以释放资源 最突出的例子是j
  • 如何让 Firebase 与 Java 后端配合使用

    首先 如果这个问题过于抽象或不适合本网站 我想表示歉意 我真的不知道还能去哪里问 目前我已经在 iOS 和 Android 上开发了应用程序 他们将所有状态保存在 Firebase 中 因此所有内容都会立即保存到 Firebase 实时数据
  • 关闭扫描仪是否会影响性能

    我正在解决一个竞争问题 在问题中 我正在使用扫描仪获取用户输入 这是 2 个代码段 一个关闭扫描器 一个不关闭扫描器 关闭扫描仪 import java util Scanner public class JImSelection publ

随机推荐

  • promise和async await的区别

    之前面试的时候被面试官问到 你能说说Promise和async await的区别吗 我才发现自己写了这么久的Promise then all async await 还真是没了解过这两者的原理和区别 于是赶紧学习了些资料 拿出小本本记录下来
  • 华为od机试题9 真题

    华为od机试题 真题 9 寻找重复字符 7 字符串翻转 6 小朋友身高排序 5 CPU最少执行时间 4 猴子爬山 3 输出信元的值 2 指定元素对最小和 1 勾股数元组 以下题目附带Java解法 是我个人写的 不一定是标准答案 没有真正的测
  • 对JS中global、window、document、this区别的理解

    本文章综合了很多地方对global和widow区别的解释 我加以挑选再结合我自己的理解以及遇到的问题写出来的 可能比较乱 但是全部看完或许对global和window对象的理解还是有帮助的 一个关于window和global区别的链接 可以
  • 12-Linux下Oracle 11g R2数据库安装

    Oracle 11g R2数据库安装 安装环境准备 需要先装centos系统 并更新组件 安装请参考centos6 5安装手册 用户一览 用户 所在组 权限 Root root 超级用户 Oracle oinstall dba 安装地址 组
  • 【windows核心编程】第二章-笔记

    一个字节8位 最多表示256个字符 UTF 16 将每个字符编码为2个字节 即Unicode windows使用 utf 16 支持代理 代理使用32位来表示一个字符 UTF 8 将一些字符编码为1个字节 一些字符编码为2个字符 一些字符编
  • IDEA 集成VisualVM Launcher JDK 监控程序插件

    IDEA 安装VisualVM Launcher 插件 1 打开setting 找到Plugins选项 安装VisualVM Launcher 插件 如果有就跳过这一步 检索 VisualVM Launcher 安装成功后 重新启动IDEA
  • 感知机与支持向量机

    感知机 追求最大程度正确划分 最小化错误 容易造成过拟合 SVM 追求大致正确分类的同时 最大化分类间隔 一定程度上避免过拟合 1 普通感知机不能产生最大间隔 而SVM可以 2 带margin的感知机可以通过两种手段实现 早停 加正则化项
  • shell 脚本关键字&符号

    shell概念 shell 既是一种解释型编程语言 也是一个这种编程语言的解释器的名字 shell是解释型语言 就是解释器会一条一条的翻译每一条语句并执行 对比之下 C语言是编译型语言 编译器把整个工程编译成可执行文件才能执行 在没有续行符
  • win10下Linux子系统(ubuntu)开启并配置(shell主题,设置中文环境,图形界面...)

    创作不易 如果以下内容对你有帮助 别忘了点一个赞 让更多的小伙伴能看到吧 一 开启win10子系统 Windows Subsystem for Linux WSL 1 启动开发者模式 设置 gt 更新和安全 gt 开发者选项 gt 开发人员
  • 自动化测试框架Testng相关

    1 Testng简介 Testng是一套开源测试框架 是从Junit继承而来 testng意为test next generation 2 Testng介绍 适合测试的原因 比Junit涵盖功能更全面的测试框架 Junit更适合隔离性比较强
  • VS2017打开自身项目提示项目不兼容问题解决

    几天前用VS2017建的控制台程序 今天打开弹出对话框 提示版本不兼容 这我就很纳闷 VS2010的项目你打不开就算了 怎么自己的也提示版本不兼容 这重新创建一个再导入太麻烦了 在试了多次无果 而且百度到的都牛头不对马嘴 用NOTEPAD
  • PLSQL Developer的详细安装步骤

    1 下载地址http www allroundautomations com 下载下来 得到 2 解压到当前文件夹 3 双击plsqldev1105 x64 exe 安装PLSQL Developer 开发工具 点击plsqlev1105
  • uboot分析之第一阶段

    1 初始化 关看门狗 初始化时钟 初始化SDRAM 2 把程序从Nand flash 拷贝到 SDAM 3 设置SP sp指向某块内存 因为要调用c函数 就要使用栈 4 c函数就是读出内核 启动内核 1 起始位置 2 跳转到reset 3
  • 2020年高教社建模国赛真题A题--炉温曲线

    2020年高教社杯全国大学生数学建模竞赛题目 请先阅读 全国大学生数学建模竞赛论文格式规范 A题 炉温曲线 在集成电路板等电子产品生产中 需要将安装有各种电子元件的印刷电路板放置在回焊炉中 通过加热 将电子元件自动焊接到电路板上 在这个生产
  • StandardScaler类中transform和fit_transform

    StandardScaler类中transform和fit transform方法里 fit transform X train 找出X train的均值和 标准差 并应用在X train上 对于X test 直接使用transform方法
  • 机器学习常用十大算法

    基本的机器学习算法 线性回归算法 Linear Regression 逻辑回归算法 Logistic Regression 朴素贝叶斯算法 Naive Bayes 最近邻居 k 近邻算法 K Nearest Neighbors KNN 支持
  • 中路对线发现正在攻防演练中投毒的红队大佬

    背景 2023年8月14日晚 墨菲安全实验室发布 首起针对国内金融企业的开源组件投毒攻击事件 NPM投毒事件分析文章 紧接着我们在8月17日监控到一个新的npm投毒组件包 hreport preview 该投毒组件用来下载木马文件的域名地址
  • 信息收集 (一)Google Hack & robots文件

    一 Google Hack 在渗透测试中 信息收集是尤为重要的一部分 甚至可以占到整个渗透的百分之六十至七十 可见掌握好信息收集的方法十分重要 那GoogleHacking作为常用且方便的信息收集搜索引擎工具 它是利用谷歌搜索强大 可以搜出
  • nvm的安装

    当项目启动时npm i报错时 提示版本问题时 是因为项目中使用node版本过低而本地node版本太高时 需要切换低版本node 此时需要安装nvm node版本控制器 来进行版本切换 1 首先必须卸载本地node js 在我的电脑搜索nod
  • Dubbo 接口异常处理逻辑

    API 接口中抛出的异常类型 有一系列的规则 代码在 ExceptionFilter 的 onResponse 中 1 如果是受检异常 非Runtime 就直接抛出 这是因为如果是受检异常 接口定义的 throws 中需要涵盖 调用端需要捕