7000字的文章,实属不易,如果看着合适请动动小手点点关注,点点点赞,点点收藏吧,谢谢!
不喜勿喷,谢谢!
使用工具 IntelliJ IDEA Community Edition 2023.1.4
使用语言 Java8/JDK1.8
目录
2.2.2 2.使用try-catch-finally语句处理异常
1.初识异常
1.1 异常概念
在生活中,异常情况随身都有可能发生。下面将从生活中的异常过渡到程序,帮助大家建立对异常的初步认识。
在日常生活中,几乎随时随处可能出现意外情况。以学校生活为例,在上学的路上发生交通事故或拥堵、教员生病、教室投影不能正常使用、机房网络感染病毒等,这些都是意外情况。虽然这些意外情况是偶然事件,但是一旦发生就会带来不小的麻烦,影响正常的学习生活。同理,在程序中也会发生类似的情况,下面看看程序中的异常。
在程序开发过程中, 程序员虽然会尽量避免错误的发生,但是总会遇到一些不可预期的问题,如除法运算时除数为0、数组下标越界、数据类型不一致、内存不足、栈溢出等,这些就是异常。
1.2 计算机两大杀手
在计算机的发展中有两大计算"杀手",一个是断点,另外一个是除数为0.因为除数在为0在数学的解是无穷大,对于计算机来说,如果是无穷大,则意味着内存将全部占满,所以,在程序开发中,务必避免除数为0的情况。
1.3 使用if-else替代异常的缺点
- 无法穷尽所有的异常情况(因为受程序员知识的限制,异常情况总比可以考虑到的情况多,总会有"漏网之鱼",所以程序总不够健壮);
- 影响程序可读性,维护难度高(这种错误处理和业务逻辑混杂的代码严重影响程序的可读性,增加程序维护的难度。
2.异常处理机制
在程序设计时,必须考虑到可能发生的异常事件并进行相应的处理,这样才能保证程序正常运行。
Java的异常处理机制也秉承着面向对象的基本思想,在Java中,所有的异常都定义为类。除了内置的异常类,Java也可以自定义异常类。此外,Java的异常处理机制也允许自行抛出异常。
2.1 异常处理结构
2.1.1 异常处理结构语法
Java针对异常的处理提供了try、catch、finally、throws。throw五个核心关键字,其中前三个关键字就可以组成常用的异常处理结构,语法如下:
try{
//有可能出现异常的语句
}
[catch(异常类型 异常对象){
//异常处理语句
}]
[finally{
//一定会允许到的语句
}]
其中,try语句用于监听,将可能抛出异常的代码放在try语句块内,当try语句块内发生异常时,异常就会被抛出;catch语句用于捕获异常,catch语句用来捕获try语句块中抛出的异常;finally语句块总会被执行,主要用于回收try语句块内打开的资源,如数据库连接,网络连接和磁盘文件。
2.1.2 异常格式的常见组合
以上个事中的catch语句、finally语句都可选。实际上,这并不是表示catch语句、finally语句可以同时消失。异常格式的常见组合有try-catch、try-catch-finally、try-finally三种。
2.2 在程序中处理异常
2.2.1 使用try-catch语句处理异常

以上程序使用了异常处理语句,当程序出现异常时,异常会被try语句监听到,然后被JVM(Java虚拟机)抛出,被catch语句捕获进行处理,执行catch语句内的异常处理代码,不再需要程序员自行编写if语句进行判断,简化了代码。
使用Java异常处理机制的目的是帮助程序员发现异常并解决异常。以上代码中采用输出错误提示的发生处理异常,不能明确地描述异常类型,不能精确定位问题所在。更好的方法是使用异常类中提供的printStackTrace()方法进行异常信息但完整输出。
捕获异常中的异常对象.printStackTrace();即可进行异常信息的完整输出。
从上述代码可以看出,Java异常处理机制可以自动捕获不同类型的异常。如果try语句块在执行过程中遇到异常,则异常处之后的代码将不再被执行,系统会将异常信息封装成相应类型的异常对象,包含异常的类型、异常出现时程序的运行状态及对该异常的详细描述。如果这个异常对象与catch语句中声明的异常类型相匹配,则会被自动捕获,Java异常处理机制把该异常对象赋给catch关键字后的异常参数,执行catch语句块中的语句。Exception类型的常用方法如下:
void printStackTrace()
输出异常堆栈信息。堆栈信息中包含程序运行到当前类的执行流程,它将输出从方法调用处到异常抛出处的方法调用序列。
String getMessage()
返回异常的详细信息。该信息描述异常产生的原因,是printStackTrace()方法输出信息的一部分。
因为使用printStackTrace()方法输出的异常信息是最完整的,所以后续会使用该方法进行异常信息输出。在其输出结果中,可以自下向上观察程序的运行轨迹,最终定位到异常发生的位置。

本文详细介绍了Java中的异常处理机制,包括异常的概念、使用if-else与异常处理的区别,try-catch-finally结构,异常分类(Error类和Exception类,运行时异常和Checked异常),自定义异常的创建与应用场景,以及如何通过throws和throw关键字声明和抛出异常。

1万+

被折叠的 条评论
为什么被折叠?



