54 线程最外层异常的处理

news/2024/11/24 5:47:49/

前言

之前在 kafka 消费者客户端的一个 case 中曾经看到了这样的了一个情况

我没有配置 "group.id", 然后 kafka 客户端抛出了 InvalidGroupIdException

然后 输出的日志信息 除了类型, 其他 什么都没有, 主要是 么有堆栈信息 

这里 来大致看一下 这个问题, 以及 衍生出一些 其他的知识点, 诸如 dispatchUncaughtException 是怎么调用的, 我们平常 看到的错误信息 是怎么输出的?

Exception in thread "main" org.apache.kafka.common.KafkaException: xxat com.hx.test13.Test10ExceptionPrintStackTrace.main(Test10ExceptionPrintStackTrace.java:20)

测试用例

package com.hx.test13;import org.apache.kafka.common.errors.InvalidGroupIdException;/*** Test10ExceptionPrintStackTrace** @author Jerry.X.He <970655147@qq.com>* @version 1.0* @date 2022-06-12 10:16*/
public class Test10ExceptionPrintStackTrace {// Test10ExceptionPrintStackTracepublic static void main(String[] args) {//        Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandler());//        throw new RuntimeException("xx");
//        throw new KafkaException("xx");
//        throw new ApiException("xx");throw new InvalidGroupIdException("xx");}private static class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {@Overridepublic void uncaughtException(Thread t, Throwable e) {System.err.println("MyUncaughtExceptionHandler - uncaughtException");e.printStackTrace();}}}

输出现象如下 

Exception in thread "main" org.apache.kafka.common.errors.InvalidGroupIdException: xx

为什么没有堆栈信息? 

填充堆栈信息的方法被重写, 并且 什么都没有做, 因此 dispatchUncaughtException 的时候输出没有堆栈信息, 只有我们通常看到的 "Exception in thread "main" org.apache.kafka.common.errors.InvalidGroupIdException: xx"

dispatchUncaughtException 输出错误信息的默认处理?

默认的 uncaughtCaughtExceptionHandler 是当前线程的 threadGroup 

如下是 threadGroup 处理 未捕获异常 的处理方式, 也就是输出 "Exception in thread "main" org.apache.kafka.common.errors.InvalidGroupIdException: xx" 的相关处理 

vm 触发 dispatchUncaughtException 的地方

线程结束的时候, 发现有未处理的异常, 调用 dispatchUncaughtException 进行处理 

输出 uncaught_exception 的相关信息  

org.apache.kafka.common.errors.InvalidGroupIdException 
{0x00000007bf7f65b0} - klass: 'org/apache/kafka/common/errors/InvalidGroupIdException'- ---- fields (total size 5 words):- private transient 'backtrace' 'Ljava/lang/Object;' @12  NULL (0 f7efecbb)- private 'detailMessage' 'Ljava/lang/String;' @16  "xx"{0x00000007bf7f65d8} (f7efecbb f7efecb6)- private 'cause' 'Ljava/lang/Throwable;' @20  a 'org/apache/kafka/common/errors/InvalidGroupIdException'{0x00000007bf7f65b0} (f7efecb6 f7f255d6)- private 'stackTrace' '[Ljava/lang/StackTraceElement;' @24  a 'java/lang/StackTraceElement'[0] {0x00000007bf92aeb0} (f7f255d6 f7f252ed)- private strict 'suppressedExceptions' 'Ljava/util/List;' @28  a 'java/util/Collections$EmptyList'{0x00000007bf929768} (f7f252ed 0)- private transient 'depth' 'I' @32  0
Exception in thread "main" org.apache.kafka.common.errors.InvalidGroupIdException: xx


http://www.ppmy.cn/news/6199.html

相关文章

ES6 箭头函数 Arrow Function

前言 1. ES6 前定义函数 2. ES6 箭头函数语法 3. ES6 箭头函数返回值 4. 箭头函数中的 this 到底是谁 ? 前言 ES6 新增了一种新的函数: 箭头函数 Arrow Function 箭头函数相当于匿名函数&#xff0c;简化了函数定义&#xff0c;将原函数的 function 关键字和函数名都删掉&am…

VSCode 最全实用插件

一、必备插件 &#x1f33e;Chinese&#xff08;中文&#xff09; Settings Sync&#xff08;配置同步到云端&#xff09; 可以让我们的vscode配置同步到云端&#xff0c;当我们跟换电脑或者再次安装vscode的时候&#xff0c;只需要登录账号即可同步配置了 wakatime&#xf…

python:写你的第一个爬虫代码

什么是爬虫 爬虫spider&#xff0c;是指向网站或者网络发出请求&#xff0c;获取资源后分析并提取对自己有用的数据的程序。 request&#xff1a;是指用户将自己的信息通过浏览器发送给服务器。 response&#xff1a;服务器收到用户的请求分析后&#xff0c;返回的数据。 注意&…

等保2.0参与医院网络安全管理的重要性

随着现代医院 IT 技术架构的演变、新兴技术的引入&#xff0c;来自医院内外部的各种安全风险不断出现&#xff0c;对医院网络安全提出了更多挑战&#xff0c;医院网络安全在技术层面和管理层面都亟待完善。为此&#xff0c;借鉴相关法律法规、行业标准等&#xff0c;提出提升现…

LeetCode Hot 100~Day2

目录 三数之和 电话号码的字母组合 括号生成 合并k个升序链表 下一个排列 搜索旋转排序数组 在排序数组中查找元素的第一个和最后一个位置 组合总数 全排列 旋转图像 三数之和 题目链接&#xff1a;15.三数之和 示例 输入&#xff1a;nums [-1,0,1,2,-1,-4] 输…

python基础(25):StringIO和BytesIO 序列化

StringIO和BytesIO - 廖雪峰的官方网站 (liaoxuefeng.com) 目录 StringIO BytesIO 小结 操作文件和目录 环境变量 操作文件和目录 小结 练习 序列化 JSON JSON进阶 练习 小结 StringIO 很多时候&#xff0c;数据读写不一定是文件&#xff0c;也可以在内存中读写…

科研信息基础设施的运行治理模式研究

摘要 【目的】科研信息基础设施建设是支持科技创新、社会治理与全球合作的坚实基础,需要配套强有力的治理模式来推进实施。【方法】本研究围绕科研信息基础设施,构建了包括组织模式、服务模式和运营模式在内的三维治理框架,遴选了国内外十余个案例进行比较分析。【结果】科研…

[思维模式-12]:《如何系统思考》-8- 工具篇 - 因果回路图/系统循环图/系统控制图,系统思考的关键工具

目录 第1章 因果回路图概述 1.1 什么是因果回路图 1.2 反馈回路 第2章 因果图的组成 2.1 回路 2.2 变量 2.4 连接 > 不同变量之间的函数关系 2.5 增强回路 2.6 调节回路 2.7 时间延时 第3章 因果图的用途与应用 3.1 因果图的价值 3.2 因果图的用途 第4章 因果图…