当前位置: 首页 > news >正文

反射异常捕获 | InvocationTargetException 要用e.getCause()打印才能看到具体异常

背景:线上某段和反射相关的代码报错了,但是异常信息打印只看到了
InvocationTargetException,没打印具体的异常。就像这样:java.lang.reflect.InvocationTargetException: null
查阅资料后发现要用e.getCause()才能打印具体异常(JDK8会有这个问题,我用JDK17没能复现)

目录

        • 代码复现
        • 日志截图
        • InvocationTargetException介绍
        • 解决方案

代码复现
package org.kkk.demo4;
import lombok.extern.slf4j.Slf4j;
import java.lang.reflect.Method;@Slf4j
public class ReflectionExample {public static void main(String[] args) {try {MyClass myClass = new MyClass();// 创建一个类的实例Class<?> clazz = myClass.getClass();// 获取 MyClass 类的 Class 对象Method method = clazz.getMethod("methodThatThrowsNullPointerException");// 获取 MyClass 类中的某个方法method.invoke(myClass);// 通过反射调用该方法} catch (Exception e) {log.error("执行异常,",e);//TODO JDK8 需要通过e.getCause()才能看到具体日志}}
}@Slf4j
class MyClass {public void methodThatThrowsNullPointerException() {// 故意抛出 NullPointerExceptionint i = 10/0;}
}
日志截图

在这里插入图片描述

InvocationTargetException介绍

java.lang.reflect.InvocationTargetException: null 是 Java 反射机制中的一个异常。这个异常通常出现在通过反射调用方法时,当被调用的方法内部抛出了一个异常,而这个异常没有被捕获时,Java 会将其封装在 InvocationTargetException 中抛出。

解决方案

1.检查被调用的方法: 确认通过反射调用的方法内部是否存在未捕获的异常。
2.查看异常的根本原因: 可以通过 InvocationTargetException 的 getCause() 方法来获取被调用方法内部抛出的实际异常,从而了解问题的根源。

相关文章:

反射异常捕获 | InvocationTargetException 要用e.getCause()打印才能看到具体异常

背景&#xff1a;线上某段和反射相关的代码报错了&#xff0c;但是异常信息打印只看到了 InvocationTargetException&#xff0c;没打印具体的异常。就像这样&#xff1a;java.lang.reflect.InvocationTargetException: null 查阅资料后发现要用e.getCause()才能打印具体异常&a…...

【计算机网络】网络版本计算器

此前我们关于TCP协议一直写的都是直接recv或者read&#xff0c;有了字节流的概念后&#xff0c;我们知道这样直接读可能会出错&#xff0c;所以我们如何进行分割完整报文&#xff1f;这就需要报头来解决了&#xff01; 但当前我们先不谈这个话题&#xff0c;先从头开始。 将会…...

使用 Python 爬虫进行网站流量分析:Referer 头的利用

在互联网时代&#xff0c;网站流量分析是了解用户行为、优化网站结构和提升用户体验的重要手段。本文将介绍如何使用 Python 爬虫技术结合 HTTP Referer 头进行网站流量分析&#xff0c;以及如何实现这一过程。 什么是 HTTP Referer 头&#xff1f; HTTP Referer 头是一个请求…...

梧桐数据库(WuTongDB):数据库技术中LL算法详解

LL 算法是一种自顶向下的语法分析算法&#xff0c;广泛用于构建解析器。LL 分析器逐个读取输入符号&#xff0c;从左到右分析&#xff08;Left-to-Right&#xff09;&#xff0c;并使用最左推导&#xff08;Leftmost Derivation&#xff09;来生成语法树。因此&#xff0c;LL 分…...

【秋招笔试】8.18大疆秋招(第一套)-后端岗

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…...

CSS 的text-size-adjust属性

text-size-adjust 属性在CSS中用于控制用户是否可以调整网页中文字的字体大小。这个属性主要针对移动设备上的浏览器&#xff0c;尤其是那些允许用户通过捏合&#xff08;pinch&#xff09;手势来缩放整个页面的浏览器。 语法 text-size-adjust: none; text-size-adjust: aut…...

阿里MAXCOMPUTE数据专辑信息读取并同步数据表

阿里MAXCOMPUTE数据专辑信息读取并同步数据表 在阿里云大数据体系中&#xff0c;我们可以使用数据地图的数据专辑&#xff0c;对数据的类别等进行一个管理 那么管理后的数据&#xff0c;我们想要落表进行相关的数据分析&#xff0c;如何做呢&#xff1f; 查看阿里云官方文档…...

rufus制作ubantu的U盘安装介质时,rufus界面上的分区类型选什么?

rufus制作ubantu的U盘安装介质时&#xff0c;rufus软件界面上的分区类型选什么(如下图&#xff09;&#xff1f; 在使用Rufus制作Ubuntu的U盘安装介质时&#xff0c;分区类型的选择取决于我们的计算机的引导方式。 以下是具体的选择建议&#xff1a; 1、查看计算机的引导方式…...

【系统架构设计师-2018年】案例分析-答案及详解

试题一&#xff08;25分&#xff09; 阅读以下关于软件系统设计的叙述&#xff0c;在答题纸上回答问题1至问题3。 【说明】 某文化产业集团委托软件公司开发一套文化用品商城系统&#xff0c;业务涉及文化用品销售、定制、竞拍和点评等板块&#xff0c;以提升商城的信息化建设…...

linux驱动入门实验班——平台总线设备驱动模型和设备树

目录 前言 一、重要结构体 二、编程思路 1.platform_driver结构体 2.probe 三、使用设备树 1.步进电机 2.红外遥控 四、代码示例 前言 在这里主要记录学习韦东山老师Linux驱动人入门实验班的笔记&#xff0c;韦东山老师的驱动课程讲的非常好&#xff0c;想要学习驱动…...

零基础学习Python(六)

1. 元类的应用 使用元类给对象添加一个固有属性author: 对类名进行限定&#xff0c;要求类名必须是大写字母开头&#xff1a; class MetaC(type):def __init__(cls, name, bases, attrs):if not name.istitle():raise TypeError("类名必须是大写字母开头~")return …...

微信小程序--31(todolist案例)

一.功能 输入待办事件添加代办事件删除代办事件 二、步骤 1.添加输入框 .wxml代码&#xff1a; <!-- 1.输入框 --><input type"text" bindinput"handleInput" value"{{text}}" /> .wxss代码&#xff1a; /* 1.输入框样式 */ i…...

springboot项目使用本地依赖项,打包后出现NoClassDefFoundError的一种解决方法

可以把本地依赖项上传到本地仓库后再引用 建立 Maven 本地仓库并将依赖上传到本地仓库 要建立 Maven 本地仓库并将依赖上传到本地仓库&#xff0c;可以按照以下步骤进行操作&#xff1a; 1. 配置 Maven 本地仓库路径 Maven 默认会在用户的主目录下的 .m2/repository 目录创…...

Maven高级使用指南

在开发大型项目时&#xff0c;Maven作为一个强大的构建和项目管理工具&#xff0c;能显著提升项目管理和构建的效率。然而&#xff0c;随着项目的扩大&#xff0c;维护和管理的复杂性也随之增加。本文将探讨一些高级的Maven用法和解决方案&#xff0c;以帮助你更好地管理大型项…...

windows docker 执行apt-get 权限问题

今天在windows下安装的docker 部署的容器执行apt-get遇到权限问题 PS C:\Users\xiaok> docker exec -it jenkins sh $ apt-get update Reading package lists... Done E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied) E: Unable to l…...

Linux系统信息排查

目录 介绍步骤 介绍 1、熟悉查看CPU信息、操作系统信息、用户信息、特殊权限账户、启动项和任务计划的排查命令 2、在进行受害主机排查时&#xff0c;首先要对主机系统进行基本排查&#xff0c;方便对受害主机有一个初步的了解。 3、利用lscpu和uname -a查看系统硬件软件基本…...

《图解设计模式》笔记(四)分开考虑

九、Bridge模式&#xff1a;将类的功能层次结构与实现层次结构分离 类的两个层次结构和作用 类的功能层次结构&#xff1a;希望增加新功能时 父类有基本功能&#xff0c;在子类中增加新功能 Something父类 …├─SomethingGood子类 想要再增加新功能 Something父类 …├─So…...

Linux shell编程学习笔记74:sed命令——沧海横流任我行(中)

0 前言 自 60 年代末以来&#xff0c;sed 一直是 Unix 标准工具箱的一部分。 Sed在以下三种情况下特别有用&#xff1a; 编辑太大的文件&#xff0c;无法进行舒适的交互式编辑&#xff1b; 当编辑命令序列过于复杂而无法在交互模式下轻松键入时&#xff0c;可以编辑任何大小的…...

[数据集][目标检测]道路积水检测数据集VOC+YOLO格式2699张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2699 标注数量(xml文件个数)&#xff1a;2699 标注数量(txt文件个数)&#xff1a;2699 标注…...

不同路径

不同路径 思路&#xff1a; 法一&#xff1a;动态规划 const int N 110; class Solution { int dp[N][N];//dp[i][j]&#xff1a;从起点走到 i j的路径个数。 public:int uniquePaths(int m, int n) {for(int i1;i<n;i){dp[1][i]1;} for(int i1;i<m;i) dp[i][1]1;f…...

【AI大模型】在线大语言模型实现与学习具身智能

目录 一、在线大语言模型的核心实现原理 &#xff08;一&#xff09;基础模型架构与预训练优化 &#xff08;二&#xff09;在线部署与实时交互模块 &#xff08;三&#xff09;持续学习与反馈优化模块 二、在线大语言模型学习具身智能的核心路径 &#xff08;一&#xff…...

OpenClaw自动化测试:nanobot驱动浏览器执行回归用例

OpenClaw自动化测试&#xff1a;nanobot驱动浏览器执行回归用例 1. 为什么选择OpenClaw进行自动化测试 去年接手一个老项目时&#xff0c;我遇到了一个典型的前端测试困境——每次发版前需要手动执行87个回归测试用例&#xff0c;整个过程耗时近4小时。尝试过Selenium和Playw…...

告别规则几何!用Python+Matlab为gprMax创建任意复杂地质模型(附HDF5文件生成代码)

突破几何限制&#xff1a;用PythonMatlab构建gprMax复杂地质模型的完整指南 地质雷达模拟领域的研究者常面临一个尴尬困境&#xff1a;脑海中的地质结构复杂多变&#xff0c;但建模工具却只能生成规则几何体。本文将彻底解决这一矛盾&#xff0c;带您掌握跨平台协作建模技术&am…...

百万行实时清洗延迟<8ms?Polars 2.0 Arrow2集成深度剖析:内存布局、缓存对齐、CPU预取指令级优化(LLVM IR反编译佐证)

第一章&#xff1a;百万行实时清洗延迟<8ms&#xff1f;Polars 2.0 Arrow2集成深度剖析总览Polars 2.0 的核心突破在于深度整合 Arrow2&#xff08;Rust 实现的 Apache Arrow 内存格式库&#xff09;&#xff0c;彻底重构了底层内存布局与计算执行引擎。这一集成不仅消除了跨…...

风电功率预测发SCI,别只盯着1区:这些2/3区‘潜力股’期刊也许更适合你

风电功率预测SCI投稿策略&#xff1a;如何在中科院2/3区期刊高效突围 风电功率预测作为新能源与人工智能交叉领域的热点方向&#xff0c;近年来在学术期刊投稿竞争日趋激烈。许多研究者习惯性瞄准中科院1区顶刊&#xff0c;却忽略了审稿周期长、录用率低的现实困境。事实上&…...

OpenClaw技能组合:GLM-4.7-Flash多技能协同工作的配置技巧

OpenClaw技能组合&#xff1a;GLM-4.7-Flash多技能协同工作的配置技巧 1. 为什么需要多技能协同&#xff1f; 去年冬天&#xff0c;我接手了一个内容运营的兼职项目。每天需要从十几个来源收集资料&#xff0c;整理成Markdown笔记&#xff0c;再根据主题生成不同风格的公众号…...

STM32智能车库管理系统设计与实现

基于STM32的智能车库管理系统设计与实现 1. 项目概述 1.1 系统架构 本系统采用双MCU架构设计&#xff0c;主控制器采用STM32系列单片机&#xff0c;负责传感器数据采集、本地显示和报警控制&#xff1b;网络通信模块采用ESP8266 WiFi模块&#xff0c;实现数据上传至云平台。系…...

给嵌入式新手的ST7789驱动避坑指南:从SPI模式到RGB565显示的完整配置流程

给嵌入式新手的ST7789驱动避坑指南&#xff1a;从SPI模式到RGB565显示的完整配置流程 第一次接触ST7789液晶驱动芯片时&#xff0c;面对厚厚的数据手册和复杂的时序图&#xff0c;很多嵌入式新手都会感到无从下手。本文将带你一步步拆解ST7789的驱动过程&#xff0c;从SPI模式配…...

深入解析EasyExcel自定义列样式:基于AbstractVerticalCellStyleStrategy的灵活实现

1. 为什么需要自定义列样式&#xff1f; 在实际开发中&#xff0c;我们经常遇到这样的需求&#xff1a;导出的Excel表格需要根据不同列的内容类型设置不同的样式。比如文字列需要居中显示&#xff0c;数字列需要右对齐&#xff0c;金额列可能需要特殊格式和颜色标注。这种需求在…...

Windows安卓应用安装终极指南:APK-Installer完整教程

Windows安卓应用安装终极指南&#xff1a;APK-Installer完整教程 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上轻松安装安卓应用吗&#xff1f;APK…...