Thinking in Java :关于Java在异常处理中的缺陷

深入理解Java:《Thinking in Java》中文版要点解析 本文还有配套的精品资源,点击获取 简介:《Thinking in Java》是Java编程领域的经典教材,涵盖Java语言核心概念至高级主题。此书不仅教授语法,更注重培养编程思维。新版包括基础语法、面向对象编程、集合框架、泛型、异常处理、多线程、I/O流、反射、注解、高级并发特性、内存管理以及设计模式等关键知识点。无论是初学者还是进阶开发者,都能通过实例学习提高Java技能... 阅读详情
//How an exception can be lost.
class VeryImportantException extends Exception {
    private static final long serialVersionUID = 1L;

    public String toString() {
        return "A very important exception!";
    }
}

class HoHumException extends Exception {
    private static final long serialVersionUID = 1L;

    public String toString() {
        return "A trivial exception";
    }
}

public class LostMessage {
    void f() throws VeryImportantException {
        throw new VeryImportantException();
    }

    void dispose() throws HoHumException {
        throw new HoHumException();
    }

    public static void main(String[] args) {
        try {
            LostMessage lm = new LostMessage();
            try {
                lm.f();
            } finally {
                lm.dispose();
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }
} /* Output:
  A trivial exception
  *///:~

上述代码运行后可以发现VeryImportantException被第二个异常覆盖掉了,这是一个致命的缺陷:关键信息丢失了

除了上面这种还有另一个更简单的隐藏异常的方法:finally中return

public class ExceptionSilencer {
    public static void main(String[] args) {
        try {
            throw new RuntimeException();
        } finally {
            // Using ‘return’ inside the finally block
            // will silence any thrown exception.
            return;
        }
    }
} ///:~
《Thinking in Java 3》:Java编程权威指南 本文还有配套的精品资源,点击获取 简介:《Thinking in Java》第三版是一本深入浅出地介绍Java语言核心概念和技术的权威指南,旨在帮助读者建立坚实的Java基础。书中详细讲解了Java的面向对象基础,类和对象的使用,接口的多重多态性,包的组织和管理,内存管理和垃圾回收,异常处理,集合框架,泛型以及多线程编程等内容。同时,它还包括了输入/输出流、网络编程、反射、... 阅读详情

相关推荐

深入理解Java:《Thinking in Java 4th Edition》精髓解析

本文还有配套的精品资源,点击获取 简介:《Thinking in Java 4th Edition》是Bruce Eckel编写的Java经典教程,深入浅出地涵盖了Java语言的各个方面。第四版不仅更新了Java技术,还增加了更多实用示例和详细解释,成为程序员深入学习Java不可或缺的教材。书中内容从面向对象基础到集合框架,再到异常处理、多线程编程、输入/输出流、泛型、反射...

weixin_30765637的博客 1187

我用了两年时间去读《Thinking in Java》

路漫漫其修远兮,吾将上下而求索。 ——题记 我用了两年时间去读《Think...

让学习编程变得生动有趣~ 2万+

深入理解Java编程:《Thinking in Java》高清中文版解析

Java作为一门拥有几十年历史的编程语言,至今仍然占据着编程语言排行榜的前列。它的成功主要得益于它的设计哲学——"一次编写,到处运行",这得益于Java的跨平台特性,即Java虚拟机(JVM)。Java的核心概念包括数据类型、变量、运算符、控制流程、方法、数组等基础构件,这些都是构建复杂应用程序的基石。在本章,我们将介绍Java程序的基本结构和组件,并通过简单实例,展示如何编写和运行一个Java程序。我们将从以下几个方面展开:Java的安装和配置Java程序的结构和元素。

weixin_42309599的博客 931

《Thinking in java》笔记

《thinking in java》引发的思考 关于java面向对象的思考——抽象、并发 thinking in java中1.1抽象过程的描述 问题空间——>解空间的映射(所有问题最终都是列表,所有问题最终都是算法,面向对象) 对象是现实世界的抽象,到解空间中很好表述 难点:如何在问题空间的元素 到 解空间的对象之间创造一一对应的映射 java中的不足——interface、abst?、 (1.必须先定义最高层[或者使用适配器方式] 2.类似的类如何高效的相互复用[比如...

__一叶__的博客 1134

深入Java编程:《Thinking in Java》电子书精粹

Java语言以其”一次编写,到处运行”的跨平台特性和面向对象的编程范式,成为了IT领域广为接受的编程语言之一。作为开发者的必修课,掌握Java基础语法是深入学习Java及其生态系统的第一步。Java是一种高级、面向对象、解释型语言,它同时支持面向过程的编程方法。其设计目标是通过尽可能与平台无关的方式,使得编写的代码能够在多种操作系统上运行。Java的源代码文件被编译成一种名为“字节码”的中间形式,然后再由Java虚拟机(JVM)解释执行。在面向对象编程中,类和对象是最基本的概念之一。

weixin_33628677的博客 951

Thinking in Java 第4版完整源码导入IntelliJ IDEA可运行项目

泛型的本质是在编译阶段建立强类型契约,而非在运行时维护类型信息。开发者应充分理解类型擦除的影响,避免误用instanceof、数组创建等受限操作。合理利用通配符、边界限定和反射机制,可在保持类型安全的同时实现灵活的设计。-T data+T get()该流程图展示了泛型组件之间的关系,强调了类型参数在整个集合框架中的传播路径以及约束机制的应用。线程状态的精确掌握是并发编程的基础。例如,当发现大量线程处于BLOCKED状态时,应检查是否存在锁竞争激烈的情况;

weixin_35294091的博客 831

Thinking in Java

Thinking in Java (Java编程思想) 学习总结心得(一) 前序: 学习java也已经有大约两年时间,但大多数断断续续,零散没有系统学习。这次经多方推荐购买了一本java学习必读书籍《Thinking in Java》学习之余将书中的心得和书中的重点内容总结写于此。 第一章 对象导论 我们之所以将自然界分解,组成各种概念,并按其含义分类,主要是因为我们是整个口语交流社...

周日王的博客 1306

《Thinking in Java》第4版课后习题答案解析

在Java中,类(Class)是创建对象的蓝图或模板。它描述了一组具有相同属性(成员变量)和方法(成员函数)的对象。类可以被视为一种数据类型,它定义了方法和变量的类型,但不创建任何实际的对象。return age;在上述代码中,我们定义了一个Person类,拥有name和age两个私有属性,以及相应的构造器和方法。方法被用来输出个人的自我介绍。对象是类的实例,是类的具体表现形式。当我们调用构造器时,就创建了一个Person对象,此时内存中会有。

weixin_42465140的博客 813

ThinkingInJava-java编程思想总结

java编程思想

nakey_xie的博客 1480

在MATLAB产生正态(Gauss)分布随机数

在 MATLAB 中内置了有产生标准正态(Gauss)分布的随机数函数,使用方法如下: 其中 为产生矩阵的行数和列数, 为产生矩阵的个数,产生的矩阵中的每个元素均为服从 N(0,1)N(0, 1)N(0,1) 的标准正态分布的元素。使用如下命令产生一个 的服从的随机数矩阵: 绘制图像效果如下: 可以看到这里随机数服从 的标准正态分布。假设 X∼N(0,1)X\sim N(0,1)X∼N(0,1),则 3X+33X+33X+3 服从 N(3,9)N(3,9)N(3,9) 分布,因此我们要产生服从 N(

程序必须为人类阅读而编写,并且仅仅碰巧可以让机器执行 3万+

保姆级CVE-2018-17066漏洞复现 DLink命令注入漏洞(更新完结)

之后按照之前复现的方式一样 我们丢到kali中执行binwalk解析。之后为了模拟 可以在kali里安装qemu-mipsel。在bin目录下可以尝试将goahead的环境搭配好。固件官网可以进行下载。

weixin_51339377的博客 878

Thinking in Java读书笔记

Thinking in Java读书笔记(IO和并发除外) 1.1、类中所有的private方法都隐式地指定为final的,由于其他类无法取用private方法,所以也就无法覆盖它;private方法无法被重写,继承对应private的方法无效,private的属性也无法拿到,但我们通常private的属性有对应的get、set方法,通常是public的,所以子类继承后可以调用方法来取得到父类的...

yjclsx的博客 42万+

ISP一键下载电路分析+74HC1G66GW(信号图)

之前要不用的最小系统的开发板要不就是用的SWD调试口,没有注意过ISP一键下载电路是个怎么回事,因为需要就简单的看了一下野火的ISP一键下载电路。 默认情况一下,一般我们的程序都是从用户闪存也就是内部的FLASH启动的, 对于F103RCT6来说ROM的大小是512kb,启动地址位0x8000000,这个在IDE keil里可以看的到,如下图。 首先简单理解一下ISP是什么: 可以把他理解为芯片厂商出场时固化在ROM当中的一段程序,它的功能就是把你写的程序一点点的搬运到FLASH当中,它引出了两个引脚

lipengyu1363658871的博客 4861

Thinking in java目录概述

文章目录目的整书概况总结 目的 为什么要选取《Thinking in java》这本书? 语言本身:Java程序语言在实际场景开发中有非常多的通途,许多互联网产品的basic依托于java语言来实现 书籍:我始终认为思想性的东西是最重要的,可以为自己的行为划定标准,知道什么样的思考方向是合理的,基本的思考框架应该是什么 阅读书籍首先应该对整本书有一个初略的了解和认识。 整书概况 通过阅读目录大...

在黑夜中前行 1349

【学一点英飞凌】AutoSar-MCAL-Gtm-TOM模块

本文基于英飞凌TC3X7芯片手册,GTM的TOM模块是产生并输出PWM的地方,想要彻底了解PWM,就必须知道它是怎么产生和如何被输出的。TOM通道还没有介绍的,详见下一篇;

qq_44688936的博客 6030

FICO F.27 Customer statement 打印

需求,定制化打印,替换标准的F.27打印 类似于采购订单的打印,但是略有不同,查阅资料之后步骤如下: T-code F.27 is SAP standard program to produce customer/vendor correspondence (letter). Correspondence Type is used to specify the related printing program and form for the particular correspondence. SAP

IamRunjiang的博客 1963

深入Java编程:《Thinking in Java》第四版代码库推荐

深入Java编程:《Thinking in Java》第四版代码库推荐 项目介绍 《Thinking in Java》第四版是由Bruce Eckel编写的经典Java编程书籍,涵盖了Java 5/6的核心概念和技术。本书不仅提供了丰富的理论知识,还附带了大量的代码示例,帮助读者深入理解Java编程的精髓。为了方便读者学习和实践,本书的代码库已经开源,并托管在GitHub上。通过下载和安装这些代码...

gitblog_00164的博客 865

零基础也能懂的Arduino ESP32离线安装包图文教程

手把手教你完成Arduino ESP32离线安装包的配置,无需联网也能快速搭建开发环境,适合初学者和网络受限用户,轻松实现arduino esp32离线安装包部署。

weixin_36213081的博客 2665

《Thinking in java》-学习笔记(9)

第9章 违例差错控制 1.基本违例 方法是创建一个特殊的对象,代表我们的信息,将其掷出我们当前的场景之外, 产生一个违例: if(t == null) throw new NullPointerException(); 这里用new在内存堆里创建违例,并需要调用一个构建器。标准的违例中,有两 个构建器,一个是默认构建器,另一个是需要使用一个字串自变量。 if(t == null)...

DeepingC 762

UFSV3.1-RPMB实现与测试

UFS RPMB功能验证与测试指南 本文介绍了UFS(通用闪存存储)中RPMB(重放保护内存块)的功能验证与测试方法。主要内容包括: RPMB基础配置: 在Linux系统中查看RPMB设备节点 读取RPMB单元描述符获取配置信息 配置RPMB区域大小(16MB)和使能状态 RPMB特性验证: 获取单次写最大请求(16KB) 测试未编程认证密钥时的读写操作 验证认证密钥编程过程 测试用例: 包含4个测试用例,验证RPMB在不同状态下的行为 提供了详细的命令行操作和预期结果 本文可作为UFS RPMB功能验证。

小码哥的博客 1254

从微服务到 Agent 服务:架构思维的迁移

微服务的概念最早在2014年由Martin Fowler提出,核心是“将单体应用拆分为一组小的服务,每个服务运行在独立的进程中,服务之间采用轻量级的通信机制互相协作,每个服务围绕具体业务构建,并且可以独立部署到生产环境”。单一职责:每个微服务只负责一个业务领域的功能,比如订单服务只处理订单相关的逻辑,用户服务只处理用户相关的逻辑被动响应:微服务是“哑的”,只有收到外部请求的时候才会执行逻辑,本身没有主动决策的能力固定流程:微服务的逻辑是硬编码的,执行流程是提前定义好的,只能按照程序员写的代码处理请求。

AI智能探索者的博客 275

《Thinking in Java》读书笔记之异常处理

《Thinking in Java》读书笔记

佳慧的成长小屋 497

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Thinking in Java中文版 1

“Thinking in Java”详细目录 写在前面的话引言1. 前提2. Java的学习3. 目标4. 联机文档5. 章节6. 练习7. 多媒体CD-ROM8. 源代码9. 编码样式10. Java版本11. 课程和培训12. 错误13. 封面设计14. 致谢第1章 对象入门1.1 抽象的进步1.2 对象的接口1.3 实现方案的隐藏1.4 方案的重复使用1.5 继承:重新使用接口1

morningbird的专栏 1544

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Thinking in Java 整理笔记:通过异常处理错误

1.异常情形:是指阻止当前方法或作用域继续执行的问题。 2.抛出异常后的流程: a.同Java中其他对象的创建一样,将使用new在堆上创建异常对象。 b.当前的执行路径(不能继续下去了)被终止,并且从当前环境中弹出对异常对象的引用。 c.异常处理机制接管程序,并开始寻找一个恰当的地方来继续执行程序。这个恰当的地方就是异常处理程序。 3.异常最重要的方面之一就是如果发生问题

zhangqix的专栏 530

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Thinking in Java---异常处理机制

java的异常处理机制可以使程序有极好的容错性,让程序更加的健壮.所谓的异常,就是指的阻止当前方法或作用域继续执行的问题,,当程序运行时出现异常时,系统就会自动生成一个Exception对象来通知程序.这样就极大的简化了我们的工作. 当然java的异常对象有很多种,下面这幅图显示了java异常类的继承体系. 从图片中可以看到java将所有的非正常情况分成了两种: 异常(Exception)和错误

荒野孤鹰 1878

12 我读Thinking in java 通过异常处理错误

Java的基本理念是“结构不佳的代码不能运行”Java中异常处理的目的在于通过使用少于目前数量的代码来简化大型、可靠的程序的生成,并且通过这种方式可以使你更加自信:你的应用中并没有未处理的错误。 12.1 概念“异常”这个词有“我对此感到意外”的意思。问题出现了,你也许不清楚该如何处理,但你的确知道不应该置之不理;你要停下来,看看是不是有别人或在别的地方,能够处理这个问题。只是在当前的环境中还没有足

li975571839的博客 567
上一篇: java 连接 MySQL 数据库出现时区错误:The server time zone value‘???ú±ê×??±??' is unrecognized or represents...
下一篇: The Little Printf (什么是真正的程序员)
coderALEX
博客等级 码龄11年 19粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值