当前位置: 首页 > 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…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...