@Async不会通过@ControllerAdvice调用全局异常

2024-02-10

我有一个带有 @Async 方法的服务类,如果它调用方法抛出任何异常,那么 @ControllerAdvice 将不会调用全局异常处理。但对于其他课程和服务,它会正确拨打建议并发送电子邮件。

@Service
public class FileScanServiceImpl implements FileScanService {
    @Override
    @Async
    public void scanFileScheduler() throws MQException {
    try{
        messageProducer.putFileNameToMQ(fileName);
        } catch (Exception e) {
            ExceptionUtility.handleException(e, currentFile);
        }
  }

ExceptionUtility 用于检查异常实例并在那里执行一些功能并引发自定义异常。

public static void handleException(Exception e throws MQException {
        String errMsg = "";
        if (e instanceof MQException) {
            // some functionality
            throw new MQException(subject, errMsg);
        }
    }

这是我的@ControlleAdvice

@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(MQException.class)
    @ResponseBody
    public void handleMQException(HttpServletRequest request, MQException ex) {
     // send email
    }
}

如果 @Async 存在任何解决方案,它将调用 @ControllerAdvice 来处理全局异常,并且现有功能也不会中断。


@ExceptionHandler被创造来捕捉只有“同步异常”。如果它有能力捕获异步线程的异常,那么当多个线程启动时,如果其中任何一个线程失败,对服务器的请求将完全中断,系统可能保持不一致的状态(由于许多其他活动线程生成)按此要求)

为了处理异步异常,Spring 有异步未捕获异常处理程序界面:

public class YourAsyncExceptionHandler implements AsyncUncaughtExceptionHandler {

    @Override
    public void handleUncaughtException(Throwable ex, Method method, Object... params) {
        
       // Your exception handling logic
    
    }
}

更多信息可以在例外部分找到:https://www.baeldung.com/spring-async https://www.baeldung.com/spring-async

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

@Async不会通过@ControllerAdvice调用全局异常 的相关文章

  • 使用 TreeMap 和 Comparator 按值对 HashMap 进行排序

    我使用以下代码创建哈希图 然后使用树形图和比较器对哈希图中的值进行排序 然而 输出结果却出乎意料 所以任何关于我做错了什么的想法都会有帮助 Code public static void main String args System ou
  • Java如何删除设置了IMMUTABLE位的文件

    正在开发一个 Java 8 项目 我从外部源复制文件 在这些源之一中 文件设置了不可变位标志 In OSX这是这样设置的 sudo chflags schg path to file In Linux chattr i path to fi
  • 使用 Intellij 2017.2 /out 目录构建会重复 /build 目录中的文件

    更新到 Intellij 2017 2 后 构建我的项目会创建一个 out包含生成的源文件和资源文件的目录 这些文件与已包含的文件重复 build并导致duplicate class生成的类的编译器错误 关于 Gradle 或 Intell
  • Junit Mockito 测试一切

    我现在正在寻找更多时间但没有结果 请帮忙 这是我要测试的课程 public class DBSelectSchema extends Database private static final Logger LOG Logger getLo
  • 有没有办法检索有关 @Controller 定义的 spring 映射的信息?

    我希望能够创建一个页面 列出由带有注释的控制器发现的映射 Controller 我这样做是为了 REST 服务 它使我们能够轻松找到页面上实例可用的端点 到目前为止 我一直在手动执行此操作 但如果可以创建一个控制器 以一种令人愉快的格式很好
  • 通过 JDBC 连接到 DB2 时的用户和密码

    我正在尝试连接到本地 DB2 10 5 Express C 服务器 这是一个测试环境 所以我不关心安全性 我能够连接到命令行处理器 在 Windows 上运行 并且我更改了配置设置AUTHENTICATION CLIENT and TRUS
  • FXML 文件中的 getHostServices().showDocument()

    有没有简单的方法可以将 getHostServices showDocument 命令放入 toHomepage 方法中 而不是执行一行又一行的代码 这样代码应该看起来干净简单 package sample import javafx ap
  • 如何知道 glassfish 是什么 - 完整平台或网络配置文件?

    我已经安装了glassfish 我可以跑 asadmin version 它显示了它是什么版本 但如何知道它是 完整平台 还是 Web 配置文件 你可以使用 glassfish4 bin gt asadmin list containers
  • a4j:commandLink 重新渲染后停止工作

    我创建了这个测试用例来隔离我的问题 一旦轮询执行 ajax 更新 a4j commandLink 操作就不会执行 如果我们在轮询重新渲染之前关闭 modalPanel 则会执行它 有什么建议吗 提前致谢 测试 xhtml
  • 维护插入顺序的并发集合[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以维护插入顺序的并发列表 有人有什么好的推荐吗 我看一些番石榴 例如SetFromMa
  • 在 JavaFX 中更改 ListView 字体大小

    我想知道如何更改 JavaFx 中的列表视图项目文本字体大小 每行文本的大小会有所不同 我尝试使用细胞因子属性 但我不知道如何使用它 有人可以帮我吗 类似的问题在这里 如何更改JavaFX中ListView的字体大小 https stack
  • 为什么java(>=7版本)不支持运行没有main方法的程序? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 class WithoutMain static System out println Without main class Sy
  • 读取不失真的灰度 PNG 图像文件

    我需要读取和处理大量的灰度 PNG 文件 我的意思是 如果它们在 Photoshop 或 GIMP 中打开 则图像模式为灰度 而不是具有灰度值的 RGB 图像 ImageIO 似乎没有实现这一点 它似乎将所有图像文件视为 sRGB 这会破坏
  • iText7 将 SVG 添加到 PdfDocument 中以及可能出现的问题

    关于问题的答案 如何使用 iText7 将 SVG 添加到 PDF 这是一个链接点击这里 https stackoverflow com questions 50059456 how to add an svg to a pdf using
  • 如何从Java中的连接获取查询字符串?

    我正在编写一个方法 尝试记录数据库调用 形成连接到它的连接 在查询之后 有很多地方调用方法 connect 来启动并调用 cleanUp 方法来结束 我不能并且不想修改每个地方 所以顺序是这样的 Connection con connect
  • Eclipse 在单独的窗口中打开代码

    我正在 eclipse 中编程 在两个显示器设置上运行 在其中一台显示器上 我只获得了项目资源管理器和编辑器作为自定义透视图 而在另一台显示器上 我获得了其他工具 例如控制台 调试 任务 变量 断点等 例如 当我单击任务视图中的任务时 这将
  • Java 应用程序启动,ProcessBuilder 一段时间后被阻止

    我正在开发一个 Java 桌面应用程序 我们称之为控制台 包含 3 个按钮 其中两个启动 Win32 应用程序 第三个应该启动一个可执行的 jar ProcessBuilder pb new ProcessBuilder java jar
  • Jackson 的 ObjectMapper 和 SQL 中的 RowMapper

    我们正在使用对象映射器 当将 ObjectMapper 与 RowMapper 一起使用时 是否应该在每个 mapRow 内部 如下所示 声明它 还是在 mapRow 外部声明为类公共成员 我认为根据本文 它应该作为公共类成员在外部 我应该
  • 删除Java中重载的方法

    有2个重载方法 这些方法中的每一个都将一种类型的列表转换为不同类型的列表 但第一种方法使用比较器 class SomeClass public static
  • 在没有 ODBC 的情况下从 Java 操作 Access 数据库

    我想从我的 Java 项目操作 Microsoft Access 数据库 accdb 或 mdb 文件 我不想使用 Microsoft 的 JDBC ODBC Bridge 和 Access ODBC 驱动程序 因为 JDBC ODBC 桥

随机推荐

  • 如何有效调试方法链函数参数?

    看一下下面的代码结构 myFunction myArray filter keep true uniq id value myFunction 使用 lodash 进行某些数组转换的结果作为其参数 虽然我喜欢代码的风格 但我发现很难调试并最
  • 如何为SqlDataSource UpdateCommand设置参数

    对于网格视图 我第一次尝试在 SQLDataSource 中为 UpdateCommand 使用存储过程
  • 使用 ShareActionProvider 时如何关闭共享历史记录?

    Android 4 0 或早期版本 如果您使用 ActionBarSherlock 中提供的新 ShareActionProvider 具有一项功能 可以在操作栏中显示上次使用的项目 有办法把这个关掉吗 对我来说 避免历史图标的最佳解决方案
  • 字典值更改而不执行任何更新[重复]

    这个问题在这里已经有答案了 为什么每个键的值都会更新 d 0 0 1 0 1 for i in range 2 4 d i d i 1 d i append i print d Output 0 0 1 0 1 2 3 2 0 1 2 3
  • Android 中稳定、准确的计时

    我正在尝试为 Android 设备创建一个音乐音序器应用程序 并且希望获得一些有关如何实现坚如磐石的计时功能的建议 如果我将 Runnable 传递给 Handler postDelayed 并指定 x 毫秒的延迟时间 那么该 Runnab
  • 如何为 MS Access 编写区分大小写的查询?

    我想知道 MS Access 的选择查询区分大小写 我有两个 VitualMonitorName 值 如下所示 VCode VirtualMonitorName Row 1 1 VM1 Row 2 2 Vm1 这里两个值是不同的 如果我写
  • 创建空 S4 对象的向量

    这可能是微不足道的 但我没有在网上找到任何东西 是否可以在 R 中创建空 S4 对象的向量 就像是 s4Vec lt rep emptyS4Object 10 Thanks 像这样 s4Vec lt lapply rep yourClass
  • 在 Eclipse 中,为什么“自动构建”被神秘地禁用?

    我正在运行 Eclipse Europa 3 3 我始终将 项目 菜单下的 自动构建 设置保留为打开状态 偶尔我的代码无法编译 我对它感到困惑 然后拉下 项目 菜单 你瞧 它不再设置了 是什么赋予了 这是一个错误 还是我正在做的其他事情可能
  • 用 python 可视化二维随机游走

    我正在尝试在二维中进行随机游走 并绘制二维游走 我已经能够步行了 但情节并不完全是我想要的 可以用 python 现场观看步行吗 或者只是为每个点添加一个标签 以便您知道哪个点是第一个 哪个点是第二个等等 import numpy as n
  • 单击外部时隐藏下拉菜单

    我有一个下拉菜单 里面有复选框 我想当用户点击外部时关闭下拉菜单 我的代码是
  • 解析“href”标签中包含特定单词的所有链接[重复]

    这个问题在这里已经有答案了 可能的重复 获取 A 元素的 href 属性 https stackoverflow com questions 3820666 grabbing the href attribute of an a eleme
  • 如何使用 C# 或批处理文件更改默认浏览器

    标题说明了一切 默认浏览器保存为 Windows 注册表项中的一个条目 这些值是基于协议保存的 如下所示 HKEY CLASSES ROOT 协议 shell open command 其中协议可以是http https等 关于如何在C 内
  • 如何确定 jekyll 是在本地运行还是在生产站点运行?

    jekyll 中有一个名为 production url 的配置参数 我找不到任何有关如何使用它的信息 理想情况下 我希望能够在运行时生成带有本地网址的永久链接serve运行时的参数和生产 urlbuild param 我怎么能这么做呢 当
  • 关闭 vim 中特定模式的高亮显示

    在 vim 中 我正在编辑文件类型 markdown 的文件 但其中包含乳胶数学表达式 例如 x i Vim 的 Markdown 语法高亮认为模式 字母 下划线 字母 是一个错误 并以亮红色突出显示此类模式中的下划线 我想通过在 vimr
  • 如何从 JSON 文件中的每个值中删除空格和换行符?

    我有一个JSON文件具有以下结构 name someKey n n some Value someKey another value anotherName anArray key value n n anotherKey value
  • 网络:使用 igraph 从事件节点数据创建图形对象

    我想从事件注释数据为 igraph 创建一个网络对象 例如 我有一个数据如下所示 Event Person 1 Obama 1 Putin 1 Abe 1 Cameron 2 Putin 2 Xi 2 Merkel 3 Obama 3 Ab
  • 从 Objective C 中的 Swift 类继承

    我在 Xcode 7 项目中成功混合和匹配 Obj C 和 Swift 然而 我似乎无法弄清楚如何在 Objective C 类中从 Swift 类继承 是的 我知道如何将该 Swift 类声明为 objc以提高可见性 在本例中 所需的 S
  • iPhone GPS 在后台暂停后不会恢复

    我的应用程序需要在后台跟踪用户位置变化 并且只要用户四处移动就可以正常工作 当用户停止并且CLLocationManager10 20 分钟左右后暂停 本通知表明 void locationManagerDidPauseLocationUp
  • 使用 stat_summary_hex 以离散色标显示最常见的值

    我有一个包含 10k 行和 3 列的数据框 xpos ypos 和簇 簇是从 0 到 9 的数字 http pastebin com NyQw29tb http pastebin com NyQw29tb 我想显示一个六边形图 其中每个六边
  • @Async不会通过@ControllerAdvice调用全局异常

    我有一个带有 Async 方法的服务类 如果它调用方法抛出任何异常 那么 ControllerAdvice 将不会调用全局异常处理 但对于其他课程和服务 它会正确拨打建议并发送电子邮件 Service public class FileSc