Guava:Throwables 异常工具

Guava Throwables 类

Throwable 类,简化异常和错误的传播与检查

类方法说明

官方文档:Throwables (Guava: Google Core Libraries for Java 27.0.1-jre API)

方法类型方法描述
static List<Throwable>getCausalChain(Throwable throwable) 
获取一个Throwable的原因链的列表.
static <X extends Throwable>XgetCauseAs(Throwable throwable, Class<X> expectedCauseType) 
返回throwable的原因,强制转换为expectedCauseType.
static ThrowablegetRootCause(Throwable throwable) 
返回抛出的最里面的原因.
static StringgetStackTraceAsString(Throwable throwable) 
返回包含toString()的结果字符串,随后完整抛出,递归的堆栈跟踪。
static List<StackTraceElement>lazyStackTrace(Throwable throwable) 
返回throwable的堆栈跟踪,可能在整个跟踪上提供较慢的迭代,但在部分跟踪上的迭代速度更快.
static booleanlazyStackTraceIsLazy() 
返回lazyStackTrace(java.lang.Throwable)是否将使用其文档中描述的特殊实现。
static RuntimeExceptionpropagate(Throwable throwable) 
把throwable包装成RuntimeException,用该方法保证异常传递,抛出一个RuntimeException异常.
static <X extends Throwable>voidpropagateIfInstanceOf(@Nullable Throwable throwable, Class<X>declaredType) 
Throwable类型为X才抛出.
static voidpropagateIfPossible(@Nullable Throwable throwable) 
Throwable类型为Error或RuntimeException才抛出。
static <X extends Throwable>voidpropagateIfPossible(@Nullable Throwable throwable, Class<X>declaredType) 
Throwable类型为X, Error或RuntimeException才抛出.
static <X extends Throwable>voidthrowIfInstanceOf(Throwable throwable, Class<X> declaredType) 
如果是declaredType的实例,则抛出throwable.
static voidthrowIfUnchecked(Throwable throwable) 
如果是RuntimeException或Error,则抛出throwable.

测试Demo

import com.google.common.base.Throwables;
import org.junit.Test;import java.io.IOException;
import java.util.List;public class ThrowablesTests {public void getException(){int[] data = {1, 2, 3};int datum = data[4];}@Testpublic void test1() {try {getException();} catch (Exception e) {List<Throwable> causalChain = Throwables.getCausalChain(e);System.out.println(causalChain);}}@Testpublic void test2() {try {// 模拟抛出一个异常throw new IOException("An I/O error occurred");} catch (Exception e) {// 获取异常的原因,并检查是否为 IOException 类型或其子类型Throwable cause = Throwables.getCauseAs(e, IOException.class);if (cause != null) {System.out.println("Cause is an IOException: " + cause.getMessage());} else {System.out.println("Cause is not an IOException");}}}@Testpublic void test3() {try {// 模拟抛出一个嵌套多层的异常throw new IOException("An I/O error occurred");} catch (Exception e) {Throwable rootCause = Throwables.getRootCause(e);String stackTraceAsString = Throwables.getStackTraceAsString(rootCause);System.out.println(stackTraceAsString);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/603272.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

概率论与数理统计 知识点+课后习题

文章目录 &#x1f496; [学习资源整合](https://www.cnblogs.com/duisheng/p/17872980.html)&#x1f4da; 总复习&#x1f4d9; 选择题&#x1f4d9; 填空题&#x1f4d9; 大题1. 概率2. 概率3. 概率4. P5. 概率6. 概率密度函数 F ( X ) F(X) F(X)7. 分布列求方差 V ( X ) …

[蓝桥杯学习] 树状数组的二分

要解决这个问题&#xff0c;插入和删除可以用STL实现&#xff0c;2操作如果用树状数组实现的话&#xff0c;将数的值作为树状数组的下标&#xff0c;即值域。 树状数组有两种操作&#xff0c;一个是更新某点的值&#xff0c;另一个是求区间和。 mid (lr)/2 &#xff0c;求和 …

spring boot + mysql+ mybatis-plus开箱即用项目

开箱即用后端项目 用于中小型项目快速构建web api&#xff0c;灵活度高&#xff0c;可根据项目自由定制所需的依赖插件&#xff0c;此项目区分了开发、测试、和生产环境 此项目集成了mysql mybatis-plus &#xff0c;使用mybatis-plus的自动填充功能实现通用字段的赋值&#x…

生信 R语言

11.芯片表达矩阵下游分析 ​rm(list ls())#清除所有变量 options(stringsAsFactors F) #BiocManager::install("CLL") suppressPackageStartupMessages(library(CLL)) data("sCLLex") sCLLex ## ExpressionSet (storageMode: lockedEnvironment) ## as…

Nougat:科学文档的OCR 使用记录

https://github.com/facebookresearch/nougat python环境需要在3.8以上 安装&#xff1a;pip install nougat-ocr 模型默认下载地址&#xff1a;/home/****/.cache/torch/hub/nougat-0.1.0-small 环境安装好之后默认使用cpu UserWarning: CUDA initialization: The NVIDIA dr…

LeetCode——队列

队列 主要是优先队列的例题&#xff0c;以及优先队列如何使用&#xff08;堆的性质&#xff0c;队列的存取&#xff09; 优先队列&#xff1a; PriorityQueue<Integer> minHeap new PriorityQueue<>(); minHeap.peek(); // 获取堆顶元素 minHeap.offer(num); …

2024美赛数学建模常用数学建模模型之——层次分析法

一、层次分析法的基本原理与步骤 人们在进行社会的、经济的以及科学管理领域问题的系统分析中&#xff0c;面临的常常是 一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。层次 分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。 …

Kafka(七)可靠性

目录 1 可靠的数据传递1.1 Kafka的可靠性保证1.2 复制1.3 Broker配置1.3.1 复制系数1.3.2 broker的位置分布1.3.3 不彻底的首领选举1.3.4 最少同步副本1.3.5 保持副本同步1.3.6 持久化到磁盘 1.2 在可靠的系统中使用生产者1.2.1 根据需求配置恰当的acks1.2.2 配置重试参数1.2.3…

视频智能分析支持摄像头异常位移检测,监测摄像机异常位移变化,保障监控状态

我们经常在生产场景中会遇到摄像头经过风吹日晒&#xff0c;或者异常的触碰&#xff0c;导致了角度或者位置的变化&#xff0c;这种情况下&#xff0c;如果不及时做出调整&#xff0c;会导致原本的监控条件被破坏&#xff0c;发生事件需要追溯的时候&#xff0c;查不到对应位置…

找到字符串中所有字母异位词【滑动窗口】

Problem: 438. 找到字符串中所有字母异位词 文章目录 思路 & 解题方法复杂度Code 思路 & 解题方法 主要需要注意s长度可能比p短 复杂度 时间复杂度: 添加时间复杂度, 示例&#xff1a; O ( 26 n ) O(26n) O(26n) 空间复杂度: 添加空间复杂度, 示例&#xff1a; O ( …

Camtasia2024苹果Mac电脑版(屏幕录制剪辑软件)

Camtasia Mac2024免费版是一款由TechSmith公司官方进行汉化推出的最新版本&#xff0c;借助Camtasia&#xff0c;您可以轻松记录屏幕并创建优美&#xff0c;专业的视频。记录所有内容-您的整个屏幕或只是一个窗口。或者&#xff0c;添加您已经拥有的视频&#xff0c;图像&#…

第十三章 接口测试(笔记)

一、接口测试分类 内部接口&#xff1a;测试被测系统各个子模块之间的接口&#xff0c;或者被测系统提供给内部系统使用的接口 外部接口&#xff1a; 1.被测系统调用外部的接口 2.系统对外提供的接口 接口测试重点&#xff1a;检查接口参数传递的正确性&#xff0c;接口功能的…

java数据结构与算法刷题-----LeetCode303. 区域和检索 - 数组不可变

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难&#xff0c;但它就是固定套路而已。其实动态规划只…

Chunjun纯钧(Flinkx)同步任务开发通用配置参数详解

Chunjun纯钧(Flinkx)是一款稳定、易用、高效、批流一体的数据集成框架,目前基于实时计算引擎Flink实现多种异构数据源之间的数据同步与计算,支持JSON模版配置任务,兼容FlinkSQL语法。本文对chunjun同步任务的配置文件进行详细的介绍和总结。 文章目录 配置文件结构详解Conte…

HackTheBox - Medium - Linux - Ambassador

Ambassador Ambassador 是一台中等难度的 Linux 机器&#xff0c;用于解决硬编码的明文凭据留在旧版本代码中的问题。首先&#xff0c;“Grafana”CVE &#xff08;“CVE-2021-43798”&#xff09; 用于读取目标上的任意文件。在研究了服务的常见配置方式后&#xff0c;将在其…

2023「总结」,2024「展望」

前言 时光荏苒&#xff0c;岁月如梭&#xff0c;转眼已经进入2024年了。回想过去的2023年&#xff0c;成长了很多&#xff0c;有收获&#xff0c;有付出&#xff0c;也有一丝丝的遗憾。   其实在写这篇文章之前我思考了很久&#xff0c;一直不知如何下手&#xff0c;也许这是…

el-select显示不全

css代码&#xff1a; .el-select-dropdown__wrap.el-scrollbar__wrap {margin-bottom: 0 !important; }

nodejs 实现内部之间接口的相互调用

ChatGPT4.0国内站点&#xff1a;海鲸AI 在 Node.js 中调用服务内的接口&#xff0c;通常是指发起 HTTP 请求到某个服务的 API 端点。这可以通过 Node.js 的内置 http 模块来实现&#xff0c;或者使用第三方库如 axios、request&#xff08;已被弃用&#xff09;、node-fetch 等…

Redis 常见的几种数据结构说一下?各自的使用场景?

文章目录 Redis 常见的几种数据结构说一下&#xff1f;各自的使用场景&#xff1f;stringlisthashsorted setbitmap使用场景&#xff1a; Redis 常见的几种数据结构说一下&#xff1f;各自的使用场景&#xff1f; string 介绍&#xff1a;string 数据结构是简单的 key-value …

机器学习笔记 - 用于语义图像分割的空洞卷积DeepLabv3

一、什么是DeepLabv3&#xff1f; DeepLabv3 是用于语义分割任务的深度神经网络 (DNN) 架构。虽然不是比较新的网络模型&#xff0c;但是也是分割模型里的杰出代表之一&#xff0c;所以还是值得深入了解。 它使用Atrous&#xff08;Dilated&#xff09;卷积来控制感受野和特征图…