JAVA零基础学习之路(二十)

异常机制

工作中,程序遇到的情况不可能完美。比如:程序要打开某个文件,这个文件可能不存在或者文件格式不对;程序在运行着,但是内存或硬盘可能满了等等。

软件程序在运行过程中,非常可能遇到刚刚提到的这些问题,我们称之为异常,英文是:Exception,意思是例外。遇到这些例外情况,或者叫异常,我们怎么让写的程序做出合理的处理,安全的退出,而不至于程序崩溃呢?我们本章就要讲解这些问题。

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

【例】伪代码:使用if处理程序中可能出现的各种情况

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 Test {
    public static void main(String[] args) {
        System.out.println("111");
        int a = 1/0;
        System.out.println("222");
    }
}

执行结果所示:

111
Exception in thread "main" java.lang.ArithmeticException: / by zero
     at com.bjsxt.Test.main(Test.java:6)
Process finished with exit code 1

根据结果,我们可以看到执行“1/0”时发生了异常,程序终止了,没有执行后面的打印“222”的动作。

如果我们使用try-catch来处理,程序遇到异常可以正常的处理,处理完成后,程序继续往下执行:

public class Test {
    public static void main(String[] args) {
        System.out.println("111");
        try {
            int a = 1/0;
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("222");
    }
}

执行结果如下:

111
java.lang.ArithmeticException: / by zero
    at com.bjsxt.Test.main(Test.iava:7)
222
Process finished with exit code 0

程序在执行“1/0”仍然遇到异常,然后进行try-catch处理。处理完毕后,程序继续往下执行,打印了”222”内容。

Java是采用面向对象的方式来处理异常的。

处理过程:

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

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

分享一个全面学习JAVA的视频教程

以上就是小编为大家整理的关于JAVA的知识。

后续持续更新,还望诸君多多学习,早日上岸!

需要学习具体教程的可以关注私信我哦!

posted @ 2022-08-29 17:51  STARRY丶SKY  阅读(16)  评论(0)    收藏  举报