监控RuntimeException「建议收藏」

监控RuntimeException「建议收藏」在线程提前终止的最主要原因就是RuntimeException,由于这些异常表示出现了某种编程错误或者其他不可修复的错误,因此它们通常不会被捕获。它们不会在调用栈中逐层传递,而是默认地在控制台中输出栈追踪信息,并终止线程我们可以通过实现java.lang.Thread.UncaughtExceptionHandler接口来获取RuntimeException异常的信息。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。

在线程提前终止的最主要原因就是RuntimeException,由于这些异常表示出现了某种编程错误或者其他不可修复的错误,因此它们通常不会被捕获。它们不会在调用栈中逐层传递,而是默认地在控制台中输出栈追踪信息,并终止线程

我们可以通过实现java.lang.Thread.UncaughtExceptionHandler接口来获取RuntimeException异常的信息。

举个栗子

将异常写入日志
public class MyDemo implements java.lang.Thread.UncaughtExceptionHandler{ 
   
    public void uncaughtException(Thread t,Throwable e){
        log.error(Level.SEVERE, "Thread terminated with exception:" + t.getName(), e);
    }
}

要为线程池中的所有线程设置一个UncaughtExceptionHandler,需要为ThreadPoolExecutor的构造函数提供一个ThreadFactory。
需要注意的是只有通过execute提交的任务,才能将它抛出的异常交给UncaughtExceptionHandler;而通过submit提交的任务,无论是抛出的未检查的异常还是已检查的异常,都将被认为是任务返回状态的一部分,如果一个submit提交的任务抛出异常而结束,则那个异常将被Future.get封装在ExecutionException中重新抛出

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161454.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月25日 下午12:46
下一篇 2022年7月25日 下午12:46


相关推荐

  • DotNetty使用之心跳机制

    DotNetty使用之心跳机制因为 DotNetty 是从 java 的 Netty 框架仿写过来的 介绍的文档特别少 加之官方也没有提供 api 文档 所以之前一直不理解心跳的用法 最近忙里偷闲 稍稍研究了一番 终于有点明白了 现在将代码复制上来 留作日后查看 ps 精髓都在代码里 Uptime Client publicclassP conststringH 12

    2025年10月22日
    4
  • 选择排序 ( 直接选择排序 && 堆排序 )

    选择排序 ( 直接选择排序 && 堆排序 )1 直接选择排序 核心思想 每一次从待排序的数据元素中选出最小 或最大 的一个元素 存放在序列的起始位置 直到全部待排序的数据元素排完 过程 1 在元素集合 array i array n 1 中选择关键码最大 小 的数据元素 2 若它不是这组元素中的最后一个 第一个 元素 则将它与这组元素中的最后一个 第一个 元素交换 3 在剩余的 array i array n 2 array i 1 array n 1 集合中

    2026年3月17日
    2
  • Pytest(17)运行未提交的git(pytest-picked)

    Pytest(17)运行未提交的git(pytest-picked)前言我们每天写完自动化用例后都会提交到git仓库,随着用例的增多,为了保证仓库代码的干净,当有用例新增的时候,我们希望只运行新增的未提交git仓库的用例。pytest-picked插件可以

    2022年7月31日
    7
  • 04735数据库系统原理(知识点整合)

    04735数据库系统原理(知识点整合)文章目录填空 1 文档存储的存储格式可以多样化 适合存储系统日志等 数据 非结构化 2 孤立点是指数据中与整体表现行为不一致的 数据集合 3 在 MySQL 中 只有使用了 的数据库或表才支持事务 InnoDB 引擎 4 一个锁实质上就是允许或阻止一个事务对一个数据对象的 存取特权 5 在 MySQL 中 实体完整性是通过主键约束和 约束来实现的 候选键 6 数据库的生命期可分为两个阶段 分别是数据库 数据库实现与操作阶段 分析与设计阶段 7 1986 年 10 月美国 ANSI 公布最早的 SQL 标准 1

    2026年3月17日
    2
  • JS中判断一个对象是否为null、undefined、0

    JS中判断一个对象是否为null、undefined、0

    2021年10月31日
    145
  • 运维思索:运维管理与运维自动化

    运维思索:运维管理与运维自动化简述各位小伙伴 近期技术文感觉发的有点多 不知是否给大家在工作中解决实际问题带来了一些灵感 为什么这么说呢 因为正是文章中涉及的细小知识点积少成多 让我从零碎繁忙的运维工作中得到了一定程度的解放 相信认真读过的小伙伴 一定会觉得工作中并非只有什么高大上的技术才能解决痛点 恰恰相反 正是那些我们平时忽视的细节才是问题的要害 那么只有切中要害 我们才能对症下药 因此接下来一段时间 我可能会陆续分享运维过程中对一些问题的思考 希望给大家带来一定的启发 本次分享的是运维管理与运维自动化的思考 一 运维的工作

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号