Java中异常详解

目录

介绍 : 

异常体系:

 异常的分类 : 

 Java 默认处理异常的方式(报错) : 

异常处理方法:

try...catch :

try...catch...finally:

try...catch ....catch.....catch....

 异常对象的常见方法: 

抛出异常Thorw

重点理解 : throw 和 throws 的区别 : 

注意事项:

自定义异常 : 

自定义编译时异常(作用”:编译时异常是编译时提示报错):

自定义运行时异常(作用:编译时不提醒不报错,在运行时才可能报错):


介绍 : 

        异常指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。简单来说就是程序在运行时的时候,发生的不正常事件,就是所谓的异常。

        异常,:在 Java 中都是以类, 进行体现的。

异常体系:

Throwable:可抛出异常

Error:系统级别问题,JVM退出等,代码无法控制。

Exception:java.lang包下,称为异常类,他表示程序本身可以处理的问题。

  • RuntimeException:运行时异常,在编译阶段是不会报错的。(例如:空指针异常、数组索引越界异常)。
  • 非RuntimeException:编译时异常,编译阶段报错提醒,必须处理,不然不会通过编译(日期格式化异常)。

异常的分类 : 

        编译时异常 ( 受检异常 ): 编译期间 ,代码格式, 语法全部没有错误,  但就是出现了红色波浪线。这是因为代码有可能会错误,解决方法:抛出异常或捕获异常。

 

        运行时异常:编译过了, 运行错了。重点 :  在Exception下,  RuntimeException 和其子类, 都是运行时异常,  反之, 都是编译时异常。


 Java 默认处理异常的方式(报错) : 

        1. 虚拟机会在出现异常的代码那里自动的创建一个异常对象:ArithmeticException。

        2. 异常会从方法中出现的点这里抛出给调用者,调用者最终抛出给JVM虚拟机。

        3. 虚拟机接收到异常对象后,先在控制台直接输出异常栈信息数据。

        4. 直接从当前执行的异常点干掉当前程序。

        5. 后续代码没有机会执行了,因为程序已经死亡。


异常处理方法:

try...catch :

介绍 :

try...catch 的方式就是捕获异常。

捕获异常:Java中对异常有针对性的语句进行捕获

格式:

try{

        可能会出现错误的代码.......

}catch(要捕获的异常类   变量名){                    //异常类可自定义(必须自己先写类)

         捕获到之后,编写异常的处理方式             //也可以是异常对象方法   

}

try...catch...finally:

        finally:常规情况下 finally 代码块中的代码,  是一定要执行的 !!!

try...catch ....catch.....catch....

        1. 可以使用多个catch捕获异常,  但是父类的异常要放在最后

        2. 多个异常直接, 也可以使用 |  进行隔开

 


异常对象的常见方法: 


抛出异常Thorw

         有些异常, 我们自己是不能处理的,  应该将问题暴露给使用者,这时候就需要将问题抛出。

1.在类名后他声明异常类(thiows 异常类)

2.在代码中抛出异常(throw new 异常类)

    public void setAge(int age) throws Exception {
        if(age>=1&&age<=120){
            this.age = age;
        }else {
             //不满足上面情况就抛出异常
            throw new Exception("请输入1-120之间的整数年龄");
        }
    }

重点理解 : throw 和 throws 的区别 : 

        throws : 声明异常的,  告知方法的调用者,  我这个方法里有异常,你调用的时候, 需要准备好应对方案。

        throw : 干力气活的,  抛出异常对象

        细节 : 如果抛出的是 RunTimeException 或者其子类,  就不需要 throws 声明

注意事项:

        1. 子类不能抛出父类没有的, 或者比父类大的异常

        2. 父类方法没抛异常,  子类重写父类方法,  如果有异常, 只能 try


自定义异常 : 

自定义编译时异常(作用”:编译时异常是编译时提示报错):

定义一个异常类来继承Exception

重新构造器

在出现异常的地方用throw new 自定义对象 抛出

自定义运行时异常(作用:编译时不提醒不报错,在运行时才可能报错):

定义一个异常类来继承RuntionException

重新构造器

在出现异常的地方用throw new 自定义对象 抛出

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值