浅谈异常分类及异常处理机制

文章目录


前言

在我们写代码的时候,经常会碰到异常,本篇文章浅谈异常的种类及处理机制


一、异常有哪些种类?

顶级异常:Throwable

子类异常:Error,如OutOfMemoryError(OOM,内存溢出);Exception(这是我们常见的)

而在Exception常见的子类有IOException,RuntimeException

RuntimeException常见的三大异常:

NullPointerException-空指针异常

ClassCastException-类型转换异常

IndexOutOfBoundsException-下标越界异常

下图便于理解,各异常的关系(只列举了部分,常用到的异常)


二、异常处理机制(谁使用谁处理)

1.当前方法声明抛出异常

代码如下(示例):

public class Demo01 {

    public static void main(String[] args) throws FileNotFoundException {

        FileInputStream fis = new FileInputStream("./test.java");
    }
}

如上只是为了演示,不建议在main方法上抛出异常,在main方法上抛出异常,不便处理异常 

2.使用try...catch代码块包裹此方法的调整代码

代码如下(示例):

public class Demo02 {

    public static void main(String[] args){

        try {
            FileInputStream fis = new FileInputStream("./test.java");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

如上使用try...catch处理异常:alt+enter选择try/catch即可或选中代码ctrl+alt+t选择try/catch

另外try...catch有时还会搭配finally一起使用,即try...catch...finally,以后单独演示


总结

1.如果调用的方法抛出了"非RuntimeException异常",则必须处理,遵循一个原则:谁调用谁处理

2.出现异常必须处理,如果不处理,编译有错误,程序无法运行

3.在我们自己写的方法中,如果出现异常,一般的做法是将异常抛出,谁调用谁处理,如下演示

class Demo03 {

    public void methodA() throws FileNotFoundException {
        //将异常抛出
        FileInputStream fis = new FileInputStream("./test.java");
    }

    public void methodB() throws FileNotFoundException {
        //调用了A方法,但是A方法将异常抛出,没有处理
        //所以调用A方法有异常存在
        methodA();
    }

    public void methodC(){
        try {
            //由于B方法依然将异常抛出,所以调用B方法仍存在异常
            //这里选择了处理异常
            methodB();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

    public void methodD(){
        //由于C方法对异常进行了处理,所以调用C方法,不需要处理异常
        methodC();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值