Java中的异常机制

本文深入探讨了异常处理机制的意义和概念,分析了异常处理在程序设计中的重要性,以及Java如何通过面向对象的方式处理异常。文章还介绍了异常的分类,包括Error、Exception等,以及它们在Java异常层次结构中的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.异常机制意义何在?

异常(Exception)是在我们编写程序时发生错误或故障时所出现的情况。如果没有异常处理机制,当我们编写程序时,我们需要考虑发生异常的各种情况来避免或处理异常,这就给我们程序员提出了很高的要求,也造成了很大的困扰。

我们在拷贝一个文件时,在没有异常机制的情况下,我们需要考虑各种异常情况,伪代码如下:

public class Test1 {
    public static void main(String[] args) {
        //将d:/a.txt复制到e:/a.txt
        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盘空间不够存放a.txt!");
            }
        }else{
            System.out.println("a.txt不存在!");
        }
    }
}

这样的代码有两个坏处:

1.逻辑代码和错误代码放在一起,看起来十分难受。

2.对程序员要求较高,书写一段代码需要考虑到各种异常情况。

综上所述,我们有必要引入异常处理机制来使代码清晰简单,同时减轻程序员的工作负担。

如果用Java的异常机制来处理异常,则代码如下(仅示意,不能执行):

try {
    copyFile("d:/a.txt","e:/a.txt");
} catch (Exception e) {
    e.printStackTrace();
}

异常处理机制的本质:当我们程序出现错误时,程序安全退出的机制。



 

二.异常的概念

异常(Exception)是指程序运行过程中出现的非正常现象,例如除数为零、用户输入错误、数组下标越界、需要处理的文件不存在等。

在Java中引进了很多描述和处理异常的类,我们把他叫做异常类。异常类定义中包含了该类异常的信息和对异常进行处理的方法。

异常处理就是指程序出现异常时依然可以正确的执行完。

public class Test2 {
    public static void main(String[] args) {
        int i=1/0;  //除数为0
        System.out.println(i);
    }
}

运行结果 出现异常:

JAVA是采用面向对象来处理异常的,处理过程为:

1.抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给JRE。

2.处理异常: JRE得到该异常后,寻找相应的代码来处理该异常。JRE在方法的调用栈中查找,从生成异常的方法开始回溯,直到找到相应的异常处理代码为止。



 

 三.异常的分类

JDK中定义了很多类,其中包含异常类。所有的异常对象都是派生与Throwable类中的一个实例。如果其中的异常类不能满足需求,还可以定义属于自己的异常类。

Java对对异常分类进行了表示,不同的异常用不同的Java类来表示。所有异常的根类为java.lang.Throwable。Throwable下面又派生了两个子类:Error和Exception。Java异常类的层次结构图如图所示:

                                                  Java异常类的层次结构图

欢迎批评指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值