Java中的异常的抛出与捕获

在Java中我们经常会看到在运行时出现一堆红码,这些红码均有其特殊意义,而这些红码,被我们称之为异常。异常,根据我们平时的理解,异常其实就是出现了某种问题。在Java中的异常大致分为两种,编译时异常和运行时异常,两种异常不同,但是相同点是抛出异常都是在运行过程中,下面让我们通过一段代码来了解一下有关异常的知识。`我们先随便写一个带有异常的代码,比如此段代码,后面的传参要求我们传入一个路径让系统通过这个路径将文件写入,此刻因为并不能通过传入的参数找到文件,所以出现了异常。我在下面用斜线标注了出来,该异常的名称为FileNotFoundException。为了方便看懂,在报错的地方,我统一在下面用斜线标注。

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class Test {
    public static void main(String[] args) {
        expection1();
    }

    public static void expection1() {
        expection2();
    }

    public static void expection2() {
        exception3();
    }

    public static void exception3()  {
        FileInputStream fis = new FileInputStream("abc");
        
    }
}

正如前面所说,异常其实就是一个问题,那么不管是什么地方出现了问题,我们都要想办法去解决,解决问题的方法也分为两种,其一就是这个问题我们解决不了,所以将问题抛给比我们等级更高的地方,让他们去解决,这种方法就是抛出异常。其二就是在抛出问题的过程中,恰好某个级别能够解决该异常,那么就处理完该异常,就不用再抛出异常了。接下来我们通过代码来解决该异常。

public class Demo {
    public static void main(String[] args)  {
        expection1();
    }

    public static void expection1()  {
        expection2();
    }

    public static void expection2()  {
        exception3();
        /
    }

    public static void exception3() throws FileNotFoundException {
        FileInputStream fis = new FileInputStream("abc");
    }
}

可以看到当我们在exception3加上抛出异常后,表示异常的红线就出现在了exception2内的方法上,那么我们一直重复该操作,直到该异常不能在抛出,那么此时的代码就是这样的。

public class Demo {
    public static void main(String[] args) throws FileNotFoundException {
        expection1();
    }

    public static void expection1() throws FileNotFoundException {
        expection2();
    }

    public static void expection2() throws FileNotFoundException {
        exception3();
    }

    public static void exception3() throws FileNotFoundException {
        FileInputStream fis = new FileInputStream("abc");
    }
}

可以很明显的得到,当我们将抛出异常语句写到main函数时,报错就消失了,那么此时异常到了哪里呢。此时的异常就被main函数抛给了JVM虚拟机,再由虚拟机执行底层的new一个FileNotFoundException异常,并调用该异常的方法将它打印在控制台。这是第一种解决异常的方法,接下来进行第二种,即我们要去捕获异常,并尝试去解决它,比如下面的代码这样。

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class Demo {
    public static void main(String[] args)  {
        expection1();
    }

    public static void expection1() {
        expection2();
    }

    public static void expection2() {
        exception3();
    }

    public static void exception3() {
        try {
            FileInputStream fis = new FileInputStream("abc");
        }
        catch (FileNotFoundException f){
            f.printStackTrace();
        }
    }
}

此时我们便不需要再去抛出异常了,而这段代码的执行结果,与前面的代码也并无太大的区别。这就是Java中异常的捕获,而前面的第一种解决异常的方法就是抛出异常。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值