Java基础之面向对象详细讲解(7)——异常处理

本文详细介绍了Java中的异常处理机制,包括运行时异常、异常处理流程、如何使用try-catch-finally处理异常,以及如何通过throws和throw关键字进行异常抛出。强调了异常处理的重要性,如提供错误信息、保持程序美观。同时,文章还展示了自定义异常的创建和使用,以适应特定项目需求。
摘要由CSDN通过智能技术生成

1、是什么,有什么

主要针对的是:运行时异常:

就是你程序出现了错误,就是符合你的语法规范,但是不符合你的JVM里面的操作规范

抛异常

创建一个错误对象,把错误对象丢出来

捕获异常

默认情况下会被JVM捕获,中断程序,然后返回错误

异常处理

throws:表示方法准备向外抛出异常

throw:表示向外抛出异常

异常的类型

在这里插入图片描述

RuntimeException:运行时异常,一般不手动处理,出问题后才会进行处理

其他Exception:必须进行手动处理

error:错误太大,没资格处理

2、为什么要处理异常

1.当程序处理异常时,为了更好的了解程序出现异常的原因、位置来便于你对程序进行改善

2.为了浏览的美观,防止程序的错误直接展示给第三方使用者

3、怎么做

try{
    尝试执行的代码
}catch(){
    异常执行的代码
}finally{
    最终都会被执行
}

4、代码助理解

对于一个错误的处理,我可以有两种操作方法:

1️⃣通过异常处理try,catch处理异常

package test;

public class test {
    public static void division(int a,int b) throws Exception/*向调用函数的对象抛出错误*/{
        if(b==0){
            throw new Exception("被除数不能是0");
        }else{
            double result = a/b;
            System.out.println(result);
        }
    }
    public static void main(String[] args) {
        //对于上面division抛出的异常我可以通过try,catch来处理
        try {
            division(2,0);
        } catch (Exception e) {
            System.out.println("出错了");
            //捕获到异常
            e.printStackTrace();
        }
    }
}

2️⃣通过exception继续向上一级返回这个异常

package test;

public class test {
    /*静态方法main只能调用静态方法*/
    public static void division(int a,int b) throws Exception/*说明我可能抛出异常*/{
        if(b==0){
            /*向外抛出异常*/
            throw new Exception("被除数不能是0");
        }else{
            double result = a/b;
            System.out.println(result);
        }
    }

    public static void main(String[] args) throws Exception/*通过throws继续向上抛出异常,向调用该方法的方法抛出异常*/ {
        /*因为是主函数是最外面的函数,所以继续抛出的话*/
        division(2,0);
    }
}

5、自定义异常(不常用)

对于项目具体的异常的处理

注意:

自定义的异常必须继承Exception或者RuntimeException

Division.java

package test;
/*自定义的异常*/
public class Divison_Ex extends Exception/*自定义的异常必须继承Exception或者RuntimeException*/{
    public Divison_Ex(String msg){
        super(msg);/*调用父类的构造方法,Exception(msg),调用父类的构造方法必须是第一行*/
        System.out.println("被除数发生异常");
    }
}

test.java

package test;

public class test {
    public static void division(int a,int b) throws Exception/*说明我可能抛出异常*/{
        if(b==0){
            /*向外抛出以一个自定义异常Division_Ex*/
            /*自定义的异常用于处理更加具体的异常,比如我这里就是对于除法的异常*/
            throw new Divison_Ex("除数不能为0");
        }else{
            double result = a/b;
            System.out.println(result);
        }
    }

    public static void main(String[] args) throws Exception {
        /*因为是主函数是最外面的函数,所以继续抛出的话*/
        division(2,0);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>