目录
(1)⽤try、catch、finally来捕获和处理异常。
一、什么是异常?
1.认识异常
异常:是指程序在运行过程中出现的非正常情况
异常处理:异常处理是一种技术,用于处理这种异常情况
public class Main {
public static void main(String[] args) {
//出现异常后 程序立刻结束
int i = 1,j = 0,res;
System.out.println("begin");
res = i / j;
System.out.println("end");
}
//一旦出现异常,程序立刻结束,“end”内容将不会输出
2.Java异常体系结构
所有异常类都是Throwable类的子类,它派生出两个子类, Error 类和 Exception 类。
(1) Error 类:表示程序无法恢复的严重错误或者恢复起来比较麻烦的错误,例如内存溢出、动态链接失败、虚拟机错误等。应用程序不应该主动抛出这种
类型的错误,通常由虚拟机自动抛出。如果出现这种错误,最好的处理方式是让程序安全退出。在进行程序设计时,我们更应关注Exception类。
(2) Exception 类:由Java应用程序抛出和处理的非严重错误,例如文件未找到、网络连接问题、算术错误 (如除以零)、数组越界、加载不存在的类、对
空对象进行操作、类型转换异常等。Exception类的不同子类对应不同类型的异常。
Exception类又可分为两大类异常:
不受检异常:也称为unchecked异常,包括RuntimeException及其所有子类。对这类异常并不要求强制进行处理,例如算术异常ArithmeticException
等。本章将重点讲解不受检异常。 (运行时异常)
受检异常:也称为checked异常,指除了不受检异常外,其他继承自Exception类的异常。对这类异常要求在代码 中进行显式处理。 (编译时异常)
Java提供了多种异常类,下表列举了一些常见的异常类及其用途。在当前阶段,你只需要初步了解这些异常类即可。在以后的编程中,可以根据系统报告的异
常信息,分析异常类型来判断程序出现了什么问题。
二、异常处理
1.异常处理
Java的异常处理机制类似于人们对可能发生的意外情况进行预先处理的方式。在程序执行过程中,如果发生了异常,程序会按照预定的处理方式对异
常进行处理。处理完异常之后,程序会继续执行。如果异常没有被处理,程序将终止运行。
Java的异常处理机制依靠以下5个关键字:try、catch、finally、throw、throws。这些关键字提供了两种异常处理方式。
(1)⽤try、catch、finally来捕获和处理异常。
try块中包含可能会抛出异常的代码。
catch块⽤于捕获并处理指定类型的异常。
finally块中的代码⽆论是否发⽣异常都会被执⾏,通常⽤于释放资源或清理操作。
public class Main {
public static void main(String[] args) {
try{
//出现异常后 程序立刻结束(try块语句结束)
int i = 1,j = 0,res;
System.out.println("begin");
res = i / j;
System.out.println("end");
}catch (Exception e){//catch所处理的异常类型与try语句块中的异常类型相同或是父类
System.out.println("caught");
e.printStackTrace();//void.printStackTrace()输出异常的堆栈信息
}
System.out.println("over");
}
}
-
如果try块中的语句执行完,没有发生异常,那么catch 语句块中的所有语句都将被忽略。
-
如果try语句块在执行过程中发生异常,并且这个异常与catch 语句块中声明的异常类型匹配,那么try语句块剩下的代码都将被忽略,,而相应的catch语
句块中的内容会被执行,catch所处理的异常类型与try语句块中的异常类型相同或是父类。-
-
try语句块在执行过程中发生异常,而抛出的异常在CATCH语句块中没有被声明,那么程序立即终止运行,程序被迫退出。
例如:
-
catch语句块中可以加⼊⽤⼾⾃定义处理信息,也可以调⽤异常对象的⽅法输出异常信息,常⽤的⽅法如下:
void prinStackTrace() :输出异常的堆栈信息。
String getMessage() &#