java异常的思考与学习心得

【JAVA】自定义异常与异常链传递实战(21) 在 Java 中,自定义异常类通常是通过继承Exception类(用于创建受检查异常)或类(用于创建非受检查异常)来实现的。// 自定义受检查异常类// 无参构造方法super();// 带消息的构造方法// 带消息和原因的构造方法上述代码中,类继承自Exception类,并且提供了三种常见的构造方法,方便在不同场景下抛出异常时携带不同的信息。如果要创建非受检查异常,只需继承// 自定义非受检查异常类super();// 自定义业务异常类// 模拟数据库操作类。 阅读详情
最近几日在学习java中的异常处理,颇费心思,自己也终于从一片迷云中走了出来,恰好看到前几天论坛里有一位bei7318的朋友曾经发帖问道:“什么抛出啊,引发啊?谁能说说异常的心得?”
却无人回应,刚好趁着周末,在这里好好总结一下学习异常的思路与心得,希望能帮到那些对异常感到困惑的朋友。


我开始学习异常时,就像我在http://topic.youkuaiyun.com/u/20111108/12/0e920587-6c7e-4153-9a89-5a31ae606ddd.html?52490
帖子中提到的方法一样,去学习,去研究。可是越学越觉得困惑。
翻阅了好几本书籍,发现了一个有趣的现象,大部分书籍对于异常描写的极其简单(一般这一章的篇幅也就在10几页左右),似乎除了那几个关键字(try,catch,throw,throws)等等的用法之外,便是提供一些自圆其说的“玩具”实例。
包括马士兵老师的教程也一样,总是觉得好像在某一个方面少了一些东西。
掌握语法并不难,熟练使用也没有问题(只要你代码敲得足够多),可是我心中并不舒服,在心中一片迷雾般的敲出一堆所谓的“正确”代码,实在有些郁闷。
这两天什么都没有做,一直在反反复复的《think in java 》关于异常,反反复复的压榨书中的每一句话,一直发散着自己的思维,试图找到什么东西类比起来。渐渐地,终于有了感觉,整理了思路,现在进入正题。顺便提一下,有时候多多发散一下思维,把一些抽象的概念联系到一些具体的事物身上,对于理解起来,好处很多。
即便发散以后,也许由于自己的境界水平不够,发散出来的定位并不是很准确,但是这是一种能力,还是要多多锻炼,试图与作者对话,这样子一旦有高手指点,便能很快进入状态,原因很简单,因为你思考过。


好了,现在进入正题,到底什么是异常处理机制。
我用自己概括的一句话来形容它,虽然我的话稍带一点调侃的政 治 色彩。
异常机制,是一个友好的,强制的,带有极强的“形式主义”色彩的一种处理机制。
现在由我来解释一番,大家就会明白了。
友好:指的是,对于程序库的使用者以及软件的使用者来说,当你运行软件,不能运行起来,有错误提示时,你的心情会舒服很多,起码你知道为什么不能运行是“文件不存在?”还是“格式错误!”。
关于友好这一点,基本所有的书籍与视频都提到了。
但是异常处理并不是因为要使程序变的友好而出现的机制。
程序员都是高傲的,很多人也许对这个机制不屑一顾,认为你用户干嘛吃饱了撑的非要打开一个不存在的文件。
然而, java设计者包括c++的设计者,他们煞费苦心设计出来异常机制的目的却是为了渐渐培养出一种程序员的责任感,而对于一个大型的,健壮的,可维护的程序而言,这份责任感就是关键了。
因此,这是强制性的。
不管你心中如何抱怨,只要你使用的是java语言,那么你就必须强制性的养成这样子的习惯。
这一点上,很多书籍都没有论及,或者是一带而过,而新手,往往对于异常机制存在的合理性感到疑惑。
大家通常都会迷惑,为啥非得用异常机制。
大部分的书籍与视频通常都是在默认异常机制存在的前提下,来教授大家怎么使用。可问题是,很多人连为什么要建立这样子的机制都由疑惑,还何谈真正的使用呢?
所以,当你疑惑的时候,不如想想我对异常机制下的定义,虽然不是非常精确,但是却足够你心知肚明的去理解了。
友好的,强制性的,带有形式主义色彩的处理机制。
所谓形式主义,意思是说,带有统一的语法规范,你只要明白了异常的存在性,那么经过熟练地练习,自然会使用异常处理机制了。


关于异常处理机制的从无到有地详细过程,以及如何运用角色扮演的方法来学习异常处理,稍后我会在我的博客上为大家演绎出来,但对于理解异常处理必要地存在性,我想大家在这里以及基本没有问题了。
理解了想法,大家便可以心知肚明的放心大胆的去练习了。
希望能帮到大家,谢谢!



扣子(coze)案例^第22期:零代码打造小红书竞品监控系统+AI自动生成运营策略建议 本文详细介绍了如何利用扣子(coze)平台零代码搭建小红书竞品监控系统。该系统通过自动化工作流抓取竞品笔记数据,并存入飞书多维表格,结合AI能力自动生成包含可视化分析报告在内的运营策略建议,帮助运营者高效进行数据驱动的市场分析。 阅读详情

相关推荐

Zemax操作--2(单透镜和双胶合透镜优化)

单透镜 要求 镜头数据里面的数量变化后要重新设计优化函数 设计 一、初始参数 按照要求输入波长、入瞳孔径、视场数据编辑器如图 物面--透镜前表面--透镜后表面--相面(镜头数据再插入一个面如图) 将2面曲率半径F数设置为10,zemax自动给出合适值 设置面2的边缘光线高度,zemax自动给出合适值 二、评价参数设置 将面1曲率半径设置为变量 再设置评价函数告诉zemax我们需要什么条件,评价函数默认即可 执行优化 双胶合透镜 要求 ...

lzy750750的博客 1万+

Java异常学习心得,欢迎拍砖

Java异常学习心得本文重在Java中异常机制的一些概念。写本文的目的在于方便我很长时间后若是忘了这些东西可以通过这片文章迅速回忆起来。1. 异常机制1.1 异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。1.2 传统的处理异常的办法是,函数返回一个特殊的结果来表示出现异常(通常这个

jjjer的专栏 2250

Shopee App加密算法逆向实战:从libshpssdk.so到x-sap-ri的生成机制

本文详细解析了Shopee App核心加密参数x-sap-ri的生成机制。通过逆向分析libshpssdk.so动态库,揭示了其采用9套算法动态切换的复杂签名逻辑,并分享了从抓包定位、Frida动态调试到Unidbg模拟执行的全过程实战经验,为移动应用安全研究提供了完整的技术路径。

weixin_29323551的博客 1328

Java学习心得之异常处理

一、异常的概念 异常指的是运行期出现错误,也就是当程序开始执行以后执行期出现的错误。 Java程序的执行过程如果出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将被提交给Java运行时系统,这个过程称为抛出异常。 当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获异常。 public class TestEx{

寒风中的信 1689

深度探索:非线性随机森林(Nonlinear Random Forest,NL-RF)原理及应用

非线性随机森林(NL-RF)旨在通过结合集成方法与高级技术来捕捉和建模数据中的非线性关系,从而改善传统随机森林在处理复杂非线性数据结构时的表现。

qq_51320133的博客 2067

保姆级教程:用GROMACS的FEP方法计算小分子结合自由能(附完整mdp配置)

本文提供了一份详细的GROMACS自由能微扰(FEP)计算教程,涵盖从系统准备、参数配置到结果分析的全流程。通过具体案例演示如何计算小分子结合自由能,包括λ窗口设计、动力学参数优化及并行化执行技巧,帮助研究者克服FEP计算中的常见问题,获得可靠的自由能数据。

weixin_30598225的博客 354

Java异常类使用心得

一、Throwable类 Throwable 是异常类的最顶层父类。 他有两个子类: 1.Error类(错误:代表了JVM的本身错误)比如我们调用递归算法时,栈爆了这种情况。所以不要太关注。 2.Exception类(异常:可以被Java异常处理机制使用,学习的核心) 上关系图: 二、Java异常类分类 1.非检查异常: 顾名思义就是你写上去,编译器程序检查不到你错误,无法提示你写try{}ca...

MeatLoveJK的博客 543

SAP软件外币评估系统配置与操作

文章摘要:本文详细介绍了SAP系统中外币评估的流程、策略及系统操作。外币评估是期末关账的重要环节,主要针对外币未清项目及资产/负债进行汇率重估,生成评估差异过账以反映真实财务状况。文中阐述了三种评估策略(不评估、增量评估、期末评估冲回)及适用场景,并提供了SAP系统外币评估的具体操作步骤(FAGL_FCV/FAGL_FC_VAL事务码)。同时,讲解了货币资金科目和未清项管理科目的评估差异处理方式,以及相关的系统配置(OB59、OBA1等)。文章还区分了已实现和未实现汇兑损益的会计处理,为企业外币业务管理提供

weixin_40672823的博客 1963

java学习记录(一)类和异常

构造代码块:给对象初始化,构造对象的时候执行,先于构造函数执行。 静态代码块:给类初始化,在类加载的时候执行,只执行一次,优先于主函数。 内部类: 1.外部类要访问内部类,必须建立内部类对象 2.内部类可以用用private等修饰。 3.内部类访问外部类成员:外部类.this.成员 4.非静态内部类不能定义静态成员 5.内部类定义在局部时候,不可以被成员修饰符修饰 6.匿名内部

zhangningdlut的专栏 688

基于反事实的因果推理Causal inference based on counterfactuals--一万六千字文献详细解读(因果关系的推理应用)【全文总结】

基于反事实的因果推理Causal inference based on counterfactuals--一万六千字文献详细解读(因果关系的推理应用)【全文总结】---来自一位即将入学的准研一,也希望这篇文章能够激励自己不断走下去!!

qq_46044325的博客 4442

使用 Python 构建 Reddit 热帖爬虫:抓取热门讨论帖和评论

在现代互联网中,Reddit 被誉为全球最大、最活跃的讨论平台之一,汇聚了各种主题的帖子、评论和社交互动。因此,抓取 Reddit 上的热门帖子和评论可以为我们提供一个丰富的文本数据源,可以用于情感分析、话题建模、趋势分析等应用。Reddit 提供了官方的 API,可以让开发者获取包括帖子、评论、用户信息等在内的各种数据。我们可以结合上述方法,抓取多个热门帖子,并将每个帖子的标题、作者、发布时间和评论内容保存到一个数据结构中。每个帖子的对象包含了丰富的信息,如标题、内容、发布时间、作者等。

2201_76125261的博客 382

Java 异常的体会

Java 异常 1 Exception的基本概念。 异常是Java中的一个对象,并定义一个基类java.lang.Throwable作为所有异常的超类。 Throwable类有两个直接子类: java.long. Error和java.long.Exception。Exception又有一个特殊的子类java.long.RuntimeException。 对于Error和Exception...

黑山老妖 188

【人工智能】Open WebUI 安装指南 ( 基于Docker下载和使用Open WebUI 、通过本地运行项目源码进行搭建Open WebUI)

Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 WebUI,旨在完全离线操作。它支持各种 LLM 运行程序,包括 Ollama 和 OpenAI 兼容的 API。社区:https://openwebui.com/

奶爸的编程之路,也就一周冷个三天 2万+

关于Java受检异常的思考

受检异常是否真的有必要?这是一个争论了很久的问题,至今仍然没有一个确定的答案。Java的受检异常,被很多人吐槽,也被很多人喜爱,当然他们都可以拿出很多的理由来证明自己的观点。看过《洞穴奇案》这本书的读者,可以了解到,从不同的角度、不同的利益诉求来看同一个问题可以得到不同的答案。没有谁对谁错,只有理解的不同。对于这个问题,我也就我自己的个人感受来简单谈一谈个人观点,而答案,相信读者心中早就有了。 什么是异常? 要了解受检异常,首先要了解什么是异常。 在Java中,异常是一套能够一致地处理错误和恢复代码运行正

一只修仙的猿 565

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java 硬件中断_中断、异常结合Java异常机制的思考

一、计算机中的中断和异常中断又称为硬件中断,是由硬件设备产生的操作系统的异常是由 操作系统执行某些指令而产生的,这些异常又分为硬件异常和软件异常1.1 硬件异常:Windows 识别的硬件异常在下表中进行了汇总:表 1异常代码异常的原因STATUS_ACCESS_VIOLATION 读取或写入不可访问的内存位置。STATUS_BREAKPOINT 遇到硬件定义的断点;仅由调试器使用。STATUS_...

weixin_33626609的博客 375

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【Java 总结思考】Java 答疑解惑之异常篇

打破舒适圈,经常对 Java 知识进行总结思考,才能保证自己不掉队。 系统化重学 Java 第三篇,一起分析下Java 异常中的常见疑问点吧。 第一问: 为什么 Java 要引入异常机制? 在没有异常处理机制的语言中,比如C语言,在函数调用过程中就只能通过检查函数返回值错误码方式来判断函数调用是否正确执行,这会扰乱正常代码流程,而且事实上高傲的程序员也很少去检查错误码。 异常处理让异常无法像错误码一样被忽略,必须写代码去捕获。另外,使用异常代替返回错误码,错误处理代码就能从主路径代码中分离出来..

盛夏温暖流年 486

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

最新初始Java JavaSE 异常 认识异常,【深夜思考】

光给面试题不给答案不是我的风格。这里面的面试题也只是凤毛麟角,还有答案的话会极大的增加文章的篇幅,减少文章的可读性。

2401_84103616的博客 691

Java 异常的一些思考

异常总体上分为2类: checked exceptions: 可被Java Compiler 检查的异常,可认为是除 RuntimeException类型 之外的其他异常 unchecked exceptions: 可通过编译,在程序运行时抛出的异常 在项目设计中,我们常常自定义系统的业务异常,当业务上不满足校验时,可以通过抛出业务异常,到 catch 语句中做统一的处理,例如打印日志,返回调...

u010473656的专栏 420

java手动抛出异常总结_Java 异常知识点思考与总结

Java 中的异常可以是方法执行过程中引发的,也可以是通过 throw 语句手动抛出的。一旦程序运行过程中发生了异常,JRE 就会试图寻找异常处理程序来处理异常,用具体的异常对象来包装该异常。Throwable 类是 Java 异常类的顶层父类,一个对象只有是 Throwable 类的(直接或者间接)实例,它才是一个异常对象,才可以被抛出(throw)或者捕获(catch),才能被异常处理机制识别...

weixin_42350951的博客 800

JAVA异常处理正常的逻辑_JAVA异常的思考与总结

在Java中,执行逻辑被意外的中断,程序跳出了正常运行的轨道,这就是异常。异常机制的优点异常是Java的一种语言特征,被用来处理程序运行失败的情况,是强制停止程序继续错误运行的一种手段。当异常发生,程序不知道如何处理时,会把异常抛出,程序会按照原路进行返回,直到异常被处理,从而也可认为异常是一种错误的恢复机制。与其他语言(例如C)进行比较,看看在它们是如何进行异常处理的:if (chdir("C:...

weixin_32858247的博客 295

Java异常到底是个啥——一次异常引发的思考

这篇文章主要通过三个部分阐释 1. Java异常Java中异常的分类,异常的处理机制 2. 异常的处理规范和实战,如何利用Springboot框架处理异常 2. 从JVM的角度分析异常机制

hello_1566的博客 273

异常问题的思考:

异常问题的思考: 今天遇到一个问题:NullPointerException: temporal 看见这个报错懵逼的,temporal是个啥,首先想起了百度,但一番折腾下来,并没有得到想要的答案,不过找到一些关于temporal的蛛丝马迹,这是一个关键词与java中的Data日期格式转换有关。于是我又查看了下具体的log,果然有个log中清清楚楚的写出了某一行报错。 血崩的一天从早上开始- -,具体的错误是某个数据的日期我使用sdf(simpleDateFormat)转换日期格式时,没有对该处进行判空。

帅磊的博客 2117

Spring Boot 学习心得体会:从入门到实践的成长与思考

Spring Boot 的学习,对我而言不仅是掌握了一个开发框架,更重要的是培养了 “以简驭繁” 的思维 —— 用框架的约定减少重复工作,用底层原理解决复杂问题,用实践技巧提升项目质量。它让我明白:Java 开发不必被繁琐的配置束缚,只要找对方法,就能在高效开发与技术深度之间找到平衡。最后想给刚入门 Spring Boot 的朋友一个建议:不要害怕 “踩坑”,每一次解决问题的过程,都是夯实基础的机会;也不要满足于 “会用”,多思考 “为什么”,才能真正把框架的价值发挥出来。

Osborn1123_的博客 1316

Java异常类学习心得

系统自带异常只能标记底层故障,登录模块中账号不存在、密码错误无法精准区分。// 自定义登录异常super(msg);if (!throw new LoginException("账号不存在");if (!throw new LoginException("密码错误");相比依靠字符串判断报错信息,自定义异常让业务逻辑清晰很多。业务相关异常继承Exception,代码疏漏类异常继承RuntimeException。

2501_93510835的博客 235

关于java异常的一点思考

关于异常的一点思考 异常生命周期 异常的来源 所有的异常都是抛出来的 有底层api抛出的 有自定义抛出的 异常的处理 1, 运行时异常 不做任何处理仍可编译通过 不建议捕获(不建议用异常来做流程控制,异常是程序中的非正常情况) 2, 受检查异常 必须处理,否则编译通过 处理方式:捕获处理 或者抛出处理 异常的终态 1, 对于捕获处理的异常 虚拟机不再做额外处理 2, 对...

ac55285210的博客 200

关于Java抛出异常与处理异常的思考

一、异常处理的现状  印象里接触过的项目,在异常处理上都觉得欠缺妥当, 没有从全局上来考虑。于是大量的代码中可以看到  try{  ...  }catch(Exception ex){    ex.printStackTrace();  }  于是异常就被吃掉了, 程序还会若无其事的继续进行。  从各种情况来看,程序员其实很烦恼异常处理,因此碰到要强制捕获的时候,要么就throws

<时光的诗>的博客 3457
上一篇: 学习java一个半月以来的心得--给初学者的一些建议
open4u
博客等级 码龄15年 30粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值