- 1
- 0
- 约2.67千字
- 约 6页
- 2018-10-27 发布于福建
- 举报
Java异常处理机制的探讨
Java异常处理机制的探讨
【摘 要】异常处理是Java运行机制的特征之一,它是Java语言健壮性的一个重要体现。本文介绍了异常的分类、异常的处理和异常的捕获策略。
【关键词】Java;异常;异常处理
0 引言
异常是程序在运行过程中发生的突发事件,比如除0溢出、数组越界、数字格式化等,这些事件阻止程序的正常运行,为了加强程序的健壮性,程序设计时,就必须要考虑到有可能发生的异常事件并做出相应的处理。
1 异常处理的概念
C语言中,通过使用if语句来判定是否出现了异常,同时,调用函数通过被调用函数的返回值感知在被调用函数中产生的异常事件并进行处理。
Java是面向对象的程序设计语言,通过异常对象调用方法来处理异常。异常处理对象是Java程序在运行时异常而自动产生的对象,发生不同的异常会产生不同的异常对象,这个对象会由JVM控制去执行相应的异常处理代码。
通常把生成异常对象并把它提交给JVM的过程称为抛出(throw)一个异常。JVM在方法的调用栈中查找,从生成异常的方法开始进行回朔,直到找到包含相应异常处理的方法为止,这一个过程称为捕获(catch)一个异常。
2 异常的分类
异常是程序中的一些错误,但并不是所有的错误都是异常,并且有些异常需要做处理,有些则不需要捕获处理。
Java异常类层次结构,如图1所示。
图1 异常类层次结构
Throwable类是所有异常和错误的超类,有两个子类Error和Exception,分别表示错误和异常。其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常,这两种异常有很大的区别,也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。
1)Error和Exception
Error是程序无法处理的错误,比如VirtuaMachineError、ThreadDeath等。这些错误发生时,Java虚拟机(JVM)一般会选择线程终止。Exception是程序本身可以处理的异常,这种异常分两大类运行时异常和非运行时异常。
2)运行时异常和非运行时异常
运行时异常都是RuntimeException类及其子类异常,如NumberFormatException、ArrayIndexOutOfBoundsException等,这些是编程时可以不用处理的异常,编译可以通过;非运行是运行时异常之外的异常,如IOException、FileNotFoundException等,是编程时必须要处理的异常,否则编译通不过。
3 异常的处理
Java异常处理通过5个关键字try、catch、throw、throws、finally进行管理。其中用try语句块来包含有可能产生异常的语句,如果块内出现异常,则异常会被抛出;catch语句块是用来捕获并处理这个异常;如果不想处理异常,也可以通过throws关键字在方法上声明该方法要抛出异常,由调度方法来处理此异常;关键字throw是在方法内部显示抛出异常对象。finally块是不管是否产生异常都会处理的代码块。
异常处理要注意的问题:
第一,try语句不能单独存在,可以和catch、finally组成try...catch...finally、try...catch、try...finally三种结构,catch语句可以有一个或多个,finally语句最多一个,try、catch、finally这三个关键字均不能单独使用。
第二,try、catch、finally三个代码块中变量的作用域分别独立而不能相互访问。如果要在三个块中都可以访问,则需要将变量定义到这些块的外面。
第三,多个catch块时候,系统会按照catch语句的书写顺序,选择相应的catch块,以最先找到的catch为准,后面的catch块不会再执行,因此catch语句里面,捕获低级的异常应该写在前面,捕获高级的异常应该写在后面,否则低级异常将因为得不到执行而没有意义。
第四,throw语句后不允许再添加其他语句,因为执行到throw时,会转到执行异常处理的代码,throw之后的语句不会再执行。
第五,如果一个方法调用了另外一个声明抛出异常的方法,那么这个方法要么处理异常,要么声明抛出。
当程序抛出一个异常的时候,必须确保所有的异常“接收者”都收到有意义的信息。也就是说,必须选择合适的异常类型,以便方法的调用者程序可以根据异常的类型来做出正确的处理;必须设置有意义的异常信息,以便看到异常或日志记录的用户能明白发生了什么事;必须通过调用stacktrace方法反映出
您可能关注的文档
- HSP22基因的研究.doc
- Hsp90α促进慢性难愈性创面愈合的作用的研究进展.doc
- HSPA+64QAM性能测试及部署的策略的研究.doc
- HSPA+LTE全球部署情况及运营商的策略分析.doc
- HSPA+R7物理层关键技术的研究.doc
- HS改良型聚苯模壳格构式混凝土墙体的探讨.doc
- HSPA+关键技术及网络升级的策略分析.doc
- HTC发展的现状及前景初探.doc
- HTC开启求生的模式.doc
- HTHP完井跨隔测试技术的应用的研究.doc
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
最近下载
- 浙江省温州市2025-2026学年高三年级上学期期末质量评价语文试卷.docx VIP
- 门窗加工安全操作规程手册.docx VIP
- 人体表面放射性污染去污处理对策研究.docx VIP
- HAIER 海尔 海尔Haier冰箱 BCD-649WE 说明书.pdf
- 公共机构节水管理规范.doc VIP
- 如何找回误删微信好友,微信好友一键恢复.doc VIP
- 2012韩山师范学院专升本插班生考试《数据结构》试卷.pdf VIP
- Dragons: Riders of Berk《驯龙记:伯克岛的龙骑手(2012)》第一季第六集完整中英文对照剧本.docx VIP
- 供电设备、供水设备运行维护管理方案.pdf VIP
- 股票操作手册.pdf VIP
原创力文档

文档评论(0)