自学内容网 自学内容网

JAVA基础:异常(下)

目录

前言

处理异常

try{}catch{}finally{}关键字

try

catch

finally

受检异常和非受检异常

总结


前言

在上篇文章中我们知道了异常的本质是一个对象,当我们的程序出错时之所以会出现异常一定是在程序的某处new了一个异常对象。要想有异常对象除了使用jdk提供的异常类,我们也可以自定义一个异常类。所有的异常类都继承throwable类,再往下可以分为error和exception,我们只需要让自定义的类继承这些异常父类就会变成一个异常类

那么我们知道了怎么产生异常,我们要怎么处理异常呢?能不能让我们的程序即使出现异常也不停止呢?我们来看看如何处理异常

处理异常

我们首先要明白不是异常出现就一定会让程序停止,之前我们出现异常之后程序报错中断是因为我们没有对异常进行捕获处理,所以异常一直抛到了虚拟机而虚拟机拿到异常后会干两件事,一个是打印异常声明,第二个就是结束异常也就是结束程序

我们要做的就是在出现异常后捕获异常然后手动处理,只要你自己处理异常异常就不会抛到虚拟机中

try{}catch{}finally{}关键字

try

我们在代码中使用try关键字包裹你觉得可能会有异常的代码,当这行代码出现异常后就会被捕获,不会再继续向上抛出

在上面的代码中如果我们录入了一个字符串就一定会出现一个异常,如果没有try异常就会被抛到主方法中,但是现在异常就被try捕获了,出现异常的代码下面的代码就不会执行了

catch

捕获了异常之后异常会进入catch代码块进行匹配

try的后面可以跟随很多catch,异常对象会进行匹配找到合适的异常对象然后执行匹配catch代码块中的代码

finally

ffinally代码块可以不写,但是一旦写了finally,finally中的代码一定会执行,即使try或catch中写了return

一般finally中会放一些try和catch中都要执行的代码

受检异常和非受检异常

在exception下面还有一个类runtimeexception

所有继承runtimeexception都是非受检异常,剩下的exception的其他子类都是受检异常

受检异常类在编译代码之前就必须要使用trycatch进行处理或者使用throws关键字进行声明然后抛给上一级,上一级也必须要处理或者继续使用throws声明

public void t1(){
    try{
        t2();
    }catch(FileNotFoundException e){
        
    }
    
}

public void t2()throws FileNotFoundException{
    new FileInputStream("c:/text");
}

代码中的t2方法中就有一个受检异常,我们没有直接处理它,所以需要在方法参数列表后用throws声明异常,这时如果t1调用t2就会报错必须进行处理或者使用throws继续向上声明

非受检异常就不需要这样

总结

我们之所以需要受检异常就是在封装工具的时候使用,因为你不知道用你编写的工具的人会怎么使用,所以我们需要在一些可能会出错的方法后面进行提前声明,来提醒使用者提前做好准备


原文地址:https://blog.csdn.net/weixin_65346668/article/details/140659811

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!