Java入门 :异常

本文介绍了Java中的异常概念,包括编译时异常和运行时异常,并详细阐述了Throwable类及其子类Error和Exception的区别。文章还探讨了异常处理的两种策略:异常捕捉和异常抛出,通过try-catch-finally语句块展示了如何处理异常,强调了在不影响程序整体运行时捕捉异常的重要性。

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

异常的介绍和处理方式

1.什么是异常

程序在自上而下的执行过程中发生了不可预料的事件导致代码停止运行,这种情况就是异常

数组下标越界,类转换异常,空指针等等

Java给我们封装了很多的异常,并且提供了很优秀的处理机制

2.Throwable类

throwable类是所有异常和错误的父类

他的下面分为了两个大类,一个是Error类,一个是Exception类

Error类是指JVM自己本身的错误,比如内存溢出这些程序员靠代码无法解决的情况

Exception类是指在编译时或者运行时发生的一些不可预期但是可以用一些方法让代码继续走下去的异常(注意:这里说的异常并不是语法格式错误那些情况)。

异常分为两种情况:

第一种是编译时异常:

                        FileNotFoundException

​                        SQLException

​                        ClassNotFoundException

​                        InterruptException

第二种时运行时的异常:

​                        数组下标越界   ArrayIndexOutOfBoundException

​                        类转换异常   ClassCastException

​                        空指针异常   NullPointerException

3异常的处理方案

那么在代码出现异常的时候有两个处理方案:

1.异常的捕捉

2.异常的抛出

3.1异常的捕捉

当代码运行时有可能会遇到异常时使用try -- catch语句进行捕捉

语法格式

try{
    有可能会出现异常的代码
} catch (异常对象) {
    针对异常程序员自行定义的处理方案
} finally {//这个finally{}在语法格式上写或不写,try--catch这个语句体依然能编译通过且执行
    无论是否有异常都会执行的内容
}
System.out.println("代码继续执行......");

那么如果出现了异常代码,则会执行catch后面方法体里面的解决方案,并且代码继续往下执行。

如果没有出现异常的话,则会不执行catch后买方法体中的解决方案,按照正常流程从上而下执行。

3.2异常的抛出

在遇到可能会发生的异常时还可以使用关键字throws,throws的作用是把这个异常不处理,直接抛出这个方法体,给到上一个类或者父类,一直往上抛出,每次抛出都可以选择继续抛出或者使用try--catch进行捕捉,如果一直抛出则最后会抛给JVM机,代码终止。


public class Aaa{
            //throws会抛出这个类型的异常给JVM机
    public static void main(String [] args) throws Exception {
           //0不可以作为除数,所以会出运行异常
           int a = 5, b = 0 ; 
           int ret = a / b ;
            //注意抛出异常之后就会在出现异常的地方终止代码,下面这个代码就不会继续执行
             System.out.println("代码执行......");
    }
}

一般情况下不影响代码整体的运行和功能时建议try--catch进行捕捉,就像生病一样,医生会先让你吃药,不行了在打针输液,再不行之后才会动手术,最后真的治不了了,才会抛弃抛出。


public class Aaa{
    public static void main(String [] args){
            //这里依然可以选择抛出异常或者抓住这个异常
           test ( 5, 0);
    }
                //这里这个throws Exception则会把异常抛出给上面
                //throws也有提醒程序员当前代码中可能会出现异常,小心!
    public static void test(int a , int b) throws Exception {
          //除数不能为0,所以可能在b被赋值为0时就会出现运行异常,可以选择捕捉或者抛出
          int ret = a / b ;
            //如果代码被捕捉则会继续执行下面代码,如果选择抛出则会最终抛给JVM之后终止代码
          System.out.println("代码继续执行......");
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值