You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Java异常信息消失,可能被压缩了?

在 Java 开发中,我们有时候会遇到异常信息看似消失的情况。实际上,这些异常信息很有可能被抑制了(Suppressed),这是由 try-with-resources 语句引入的新特性。

在 Java 7 中,有一个 try-with-resources 结构,用于优雅地处理一些需要关闭资源的代码块,例如打开的文件、网络连接等。我们可以用类似如下的语句来使用它:

try (InputStream is = new FileInputStream(file)) { //... } catch (IOException e) { //... }

这里的 try-with-resources 结构会自动关闭 InputStream 对象 is,无论是正常结束还是发生异常。如果在 close() 方法调用过程中发生了异常,这个异常会被抑制,并且添加到原始异常对象上。

比方说,如果在关闭 is 流的时候发生异常,我们就无法看到这个异常的具体信息,因为它会被添加到 e 异常对象的 suppressed 异常列表中。可以通过下面的代码来查看发生的异常:

} catch (IOException e) { Throwable[] suppressed = e.getSuppressed(); if (suppressed.length > 0) { for (Throwable t : suppressed) { t.printStackTrace(); } } //... }

如果你想避免被这个特性迷惑,可以直接使用 try-catch-finally 语句替代。

try { InputStream is = new FileInputStream(file); //... } catch (IOException e) { //... } finally { try { is.close(); } catch (IOException e) { //... } }

这样可以保证在关闭 is 流之前,即使发生异常了,我们也能够看到相应的错误信息。

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

阿里巴巴的 Java 开发手册(黄山版)来了

## 0. 阅读完本文你将会学会- 写出更优雅高效的Java代码## 1. 前言周六逛B乎的时候正好刷到这样一个问题 **"Java开发手册(黄山版)怎么样?"**,我仔细一看这不是孤尽老师的著作吗?居然已经更新到了黄山版。上次... **魔法值指的是代码中没有任何定义,直接像魔法一样凭空出现的值,可以是数字、字符串等。**这是我印象中比较深的一条强制性规约。当我刚入这行的开始写代码的时候,魔法值满天飞,怎么方便怎么来。根本不会考虑这...

开源Java诊断工具Arthas:开篇之watch实战

## 一、前言 - 还在为排查Java程序线上问题头痛吗,看我们用阿里开源的诊断神器 Arthas 来帮您- 本文开篇主要介绍 阿里开源的诊断神器Arthas 3.7.0版本,watch、jad、classloader 命令,以 Debian 11、openjdk 11 ... 线程的状态信息- 并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常- 监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。### 2. [安装和启动](https://arthas.aliyun....

Maven依赖冲突避坑指北

(Class.java:2309) at java.base/java.lang.Class.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:463) ... 21 common frames omittedCause by: java.lang.ClassNotFoundException: or... 虽然业界暂时没有类似手机清理管家那种扫描服务依赖健康度的工具和算法,但很显然,基本可以认为,红线越多,冲突便越严重。除非你非常清楚每个冲突点到底有没有影响,而不是凭直觉来判断,否则每一个冲突都有可能会演...

Java程序性能分析:内存

## 一、前言- 开发Java项目过程中,难免会碰到一些 性能 问题,这时候就需要一些工具,帮忙排查- 本文主要介绍 JDK自带的上古神器 jstat、jmap,用于分析内存问题,另简单介绍 MAT、gceasy、HeapDump 等- 以 openjdk... 前6列 输出各个内存区域使用百分比 (没有容量大小),依次是 幸存区survivor0、1、新生代Eden、老年代Old、元数据 Metaspace、Compressed class space- GC 结尾的列 表示 GC次数,GCT 结尾的 表示 GC耗时,依次是 Y...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

Java异常信息消失,可能被压缩了? -优选内容

阿里巴巴的 Java 开发手册(黄山版)来了
## 0. 阅读完本文你将会学会- 写出更优雅高效的Java代码## 1. 前言周六逛B乎的时候正好刷到这样一个问题 **"Java开发手册(黄山版)怎么样?"**,我仔细一看这不是孤尽老师的著作吗?居然已经更新到了黄山版。上次... **魔法值指的是代码中没有任何定义,直接像魔法一样凭空出现的值,可以是数字、字符串等。**这是我印象中比较深的一条强制性规约。当我刚入这行的开始写代码的时候,魔法值满天飞,怎么方便怎么来。根本不会考虑这...
开源Java诊断工具Arthas:开篇之watch实战
## 一、前言 - 还在为排查Java程序线上问题头痛吗,看我们用阿里开源的诊断神器 Arthas 来帮您- 本文开篇主要介绍 阿里开源的诊断神器Arthas 3.7.0版本,watch、jad、classloader 命令,以 Debian 11、openjdk 11 ... 线程的状态信息- 并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常- 监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。### 2. [安装和启动](https://arthas.aliyun....
快速入门(Java SDK)
展示使用 TOS Java SDK 的通用代码模版。 java import com.volcengine.tos.TOSV2;import com.volcengine.tos.TOSV2ClientBuilder;import com.volcengine.tos.TosClientException;import com.volcengine.tos.TosSer... catch (TosServerException e) { // 操作失败,捕获服务端异常,可以获取到从服务端返回的详细错误信息 System.out.println("putObject failed"); System.out.println("StatusCod...
异常处理(Java SDK)
对于请求失败的场景定义了详细的 HTTP 状态码和业务错误码。详细内容,请参见TOS 服务端状态码和错误码定义。 SDK 自定义异常TOS Java SDK 包含两类异常,分别是客户端异常 TosClientException 和服务端异常 TosServ... ExceptionTosServerException 是 SDK 从 TOS 服务端请求返回的结果中解析抛出,包括 HTTP 状态码,异常原因等信息。如遇到 TosServerException,可参考 TOS 服务端状态码和错误码定义进行处理。 异常处理示例对于 SDK...

Java异常信息消失,可能被压缩了? -相关内容

Java SDK 简介

本文介绍火山引擎对象存储服务 TOS(Tinder Object Storage) Java SDK 在各种场景下的使用方法、接口定义和参数说明,以及针对桶、对象操作的示例代码,方便您参考使用。 SDK 概览项目 参考文档 使用准备 安装 SDK ... 管理对象 管理对象元数据 管理对象读写权限 删除对象 管理对象标签 恢复对象 数据处理 图片处理 基础图片处理 获取图片信息 异常图片检测 图片处理持久化 视频处理 视频截帧 获取视频信息 视频截帧图...

断点续传(Java SDK)

若出现网络异常等情况导致文件上传失败,您可再次调用该接口,从断点处续传上传未完成的部分。 注意事项要上传对象,您的账号必须具备 tos:PutObject 权限,具体操作,请参见权限配置指南。 上传对象时,对象名必须满足一... 详细信息,请参见性能优化。 基本示例以下代码展示 uploadFile 接口的基本使用方式。 java import com.volcengine.tos.TOSV2;import com.volcengine.tos.TOSV2ClientBuilder;import com.volcengine.tos.TosClientE...

Java应用接入

Java应用在不同场景下有不同的接入方式,本文介绍不同场景下Java应用的详细接入操作,接入后可以实现自动收集Trace信息、自动生成Metric指标、以及调用链检索、日志检索等功能。 通过APMPlus监控组件接入APMPlus监控... 步骤三:异常排查 如果没有上报数据,请通过以下操作逐步排查: 检查服务是否正常成功启动。 在启动参数加上-Dapmplus.logging.level=DEBUG,开启debug日志,查看logs目录下的agent日志是否有异常。 容器部署如果您的应...

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

SASL_PLAINTEXT 接入点 PLAIN 机制收发消息

获取用户名及密码的方式请参考2 收集连接信息。 通过 SASL_PLAINTEXT 接入点 PLAIN 机制接入时,配置文件示例如下。 Java bootstrap.servers=xxxxxsecurity.protocol=SASL_PLAINTEXTtopic=my-topicconsumer.group.... Shell Produce ok:sasl-0@0Produce ok:sasl-0@1Produce ok:sasl-0@2Produce ok:sasl-0@3说明 消息队列 Kafka版提供示例项目 Demo供您快速接入,下载并解压缩 Demo 后,可以直接执行以下命令发送消息。 Shell java -...

SASL_SSL 接入点 PLAIN 机制收发消息

获取用户名及密码的方式请参考2 收集连接信息。 通过 SASL_SSL 接入点 PLAIN 机制接入时,配置文件示例如下。 YAML bootstrap.servers=xxxxxsecurity.protocol=SASL_SSLtopic=my-topicconsumer.group.id=testconsu... Shell Produce ok:sasl-0@0Produce ok:sasl-0@1Produce ok:sasl-0@2Produce ok:sasl-0@3说明 消息队列 Kafka版提供示例项目供您快速接入,下载并解压缩 Demo 后,可以直接执行以下命令发送消息。 Shell java -cp ka...

SASL_PLAINTEXT 接入点 SCRAM 机制收发消息

获取用户名及密码的方式请参考2 收集连接信息。 YAML bootstrap.servers=xxxxxsecurity.protocol=SASL_PLAINTEXTtopic=my-topicconsumer.group.id=testconsumer.auto.offset.reset=earliestconsumer.enable.auto.... Shell Produce ok:sasl-0@0Produce ok:sasl-0@1Produce ok:sasl-0@2Produce ok:sasl-0@3说明 消息队列 Kafka版提供示例项目供您快速接入,下载并解压缩 Demo 后,可以直接执行以下命令发送消息。 Shell java -cp ka...

SASL_SSL 接入点 SCRAM 机制收发消息

获取用户名及密码的方式请参考2 收集连接信息。 通过 SASL_SSL 接入点 SCRAM 机制接入时,配置文件示例如下。 YAML bootstrap.servers=xxxxxsecurity.protocol=SASL_SSLtopic=my-topicconsumer.group.id=testconsu... Shell Produce ok:sasl-0@0Produce ok:sasl-0@1Produce ok:sasl-0@2Produce ok:sasl-0@3说明 消息队列 Kafka版提供示例项目供您快速接入,下载并解压缩 Demo 后,可以直接执行以下命令发送消息。 Shell java -cp ka...

多版本场景(Java SDK)

java import com.volcengine.tos.TOSV2;import com.volcengine.tos.TOSV2ClientBuilder;import com.volcengine.tos.TosClientException;import com.volcengine.tos.TosServerException;import com.volcengine.tos... catch (TosServerException e) { // 操作失败,捕获服务端异常,可以获取到从服务端返回的详细错误信息 System.out.println("putBucketVersioning failed"); System.out.println(...

快速开始

本文介绍如何快速使用日志服务 Java SDK 实现基础的日志采集流程,包括创建日志项目、创建日志主题、写入日志和查询日志等操作。 前提条件已安装日志服务 Java SDK。更多信息,请参见安装 Java SDK。 已添加 VOLCENG... 代码示例如下: java package com.volcengine.example.tls.demo;import com.volcengine.model.tls.*;import com.volcengine.model.tls.exception.LogException;import com.volcengine.model.tls.request.*;import c...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询