异常处理

运行时的异常

1.异常处理:

异常是可以被我们的程序处理的,为了提高代码的健壮性。

错误:error 不能被代码处理的。

异常出现了,如果我们不处理异常,默认是一层层向上抛出异常,最后由jvm打印出来,程序此时暂停了,就运行不了。

2.try… catch (Exception e)

try中的是可能出现异常的代码, catch是将这个出现的异常捕捉,Exception是异常的超级类,e是该异常对象

异常有很多类型的,Exception是广泛的,具体的有一些异常是ArrayOutOfIndex 这个是数组越界的异常。。

3.多异常处理:

try…catch(ArrayStoreException e){

//…

}catch(Exception e){

}

就是多个catch 来捕捉不同的异常。但是如果你要放Exception来捕捉异常,那么这个超类一定要放在后面一个,前面一个放子类异常类,比如这里的ArrayStoreException .

4.try …catch… finally

finally内的代码即使在出异常了,也会执行。 finally内主要处理一些收尾工作,和一些资源的关闭工作。。。

由于之前出错,出现异常,导致一些资源打开之后,没能关闭,因此需要加finally,来关闭打开的资源。。。

5.自定义异常

由于自定义异常99%都是在运行时的异常,因此继承RuntimeException类,就行了。

快捷键:ctrl +O 快速重写父类方法

(1).先自定义异常类

/**自定义的StockException异常类*/
public class StockException extends RuntimeException{


    public StockException() {
        super();
    }

    public StockException(String message) {
        super(message);
    }

    public StockException(String message, Throwable cause) {
        super(message, cause);
    }

    public StockException(Throwable cause) {
        super(cause);
    }

    protected StockException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
}

(2).抛自定义异常并处理异常:

语法:throw new <自定义异常类>();

package cn.tx.demo;

public class Person{
    public static void main(String[] args) {
        //处理异常
        try {
            submitOrder(6);
        } catch (Exception e) {
            System.out.println("知道异常了");
        } finally {
            System.out.println("异常处理完毕");
        }
    }
    public static void submitOrder(int stock){
        if(stock>5){
            //向上抛出异常,向调用端抛出异常。
            throw new StockException("库存不足"+stock);
        }
        System.out.println("购买成功");
    }
}




说明:异常一旦出现了,后面的代码时不会继续执行的。 程序就暂停了。

try-catch:没有资源需要释放,仅仅是处理异常
try-catch-catch-catch-catch:对应的是被调用的函数,抛出多个异常的情况,分别处理,
子父类异常,子类在前,父类在后
try-finally:不一定需要处理异常,但需要对资源的整合
throw方法内抛出异常,thorows方法外抛出异常
©️2020 CSDN 皮肤主题: 黑客帝国 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值