本章内容
异常的定义
Java异常处理机制
Java异常分类
什么是异常(Exception n.例外)?
异常是指软件程序在运行过程中遇到的问题我们称之为异常。
拷贝文件代码:
public class Test1{
public static void main(String[] args){
//将d:a/.txt复制到e:/a.txt
/*
考虑的情况:
1.文件是否存在
2.e盘空间大于a.txt文件长度
3.复制到一般IO流断掉
*/
if("d:a.txt"这个文件存在){
if(e盘的空间大于a.txt文件长度){
if(文件复制到一半IO流断掉){
停止copy,输出:IO流出问题
}else {
copyFile("d:/a.txt", "e:/a.txt");
}
}else {
System.out.println("e盘空间不足!");
}
}else {
System.out.println("a.txt不存在!");
}
}
}
这种方式的坏处:
-
逻辑代码和错误处理代码放在一起!
-
程序员本身需要考虑的例外情况较复杂
Java异常处理机制---try...catch(捕获)
try{
copyFile("d:/a.txt", "e:/a.txt");
}catch(Exception e){
e.printStackTrace();
}
异常机制的本质:
程序可以安全的退出
异常的概念
程序运行过程中出现的非正常现象
异常处理的概念
指程序在出现问题时依然可以正确的执行完
Java的异常处理机制
特点:
-
引进很多用来描述和处理异常的类,称为异常类
-
异常类定义中包含了该异常类的信息和对异常进行处理的方法
-
做法:
-
采用面向对象的方式来处理异常的
处理过程:
-
抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给JRE(Java运行时环境)
-
捕获异常:JRE得到该异常后,寻找相应的代码来处理该异常。JRE在方法的调用栈中查找,从生成异常的方法开始回溯,直到找到相应的异常处理代码为止
try{
//
}catch(Exception e){
e.printStaticTrace;
/*
Java通过生成异常类对象处理异常,所以一定会生成对象
*/
}
异常分类
如图:---异常类的层次结构(根类下面有两个子类)
特点:
-
所有异常对象都是派生与Throwable类的一个实例
-
内置的异常类不满足要求可以自己创建异常类
子类特点:
Error异常不需要处理
特点:
-
程序无法处理的错误,表示运行应用程序中较严重问题
-
大多时候表示的是JVM出现的问题---如内存溢出
-
这类异常发生通常会选择线程终止
-
Error表明系统JVM处于不可恢复的崩溃状态中,无需管它
Error类包括:
Exception
需要程序员去管的
RuntimeException---UncheckedException---运行时异常
编译器不需要处理,运行时会抛出