Day 13 (异常处理)

一、异常处理机制

        方式一:try--catch--finally

                说明:

                1、finally可以不写;

                2、使用try将可能出现异常的代码包装起来,在执行过程中,一旦出现异常,就会出现一个异常类的对象,再根据catch去匹配对应的异常;

                3、匹配到某个异常,进入到对应catch中去处理异常,处理完成跳出try--catch结构(无finally),继续执行该结构后的代码;

                4、catch结构中异常如果无子父类关系,则声明的先后顺序无影响,若有子父类关系,则父类声明在子类的下面;(比如Exception是NumberFormatException的父类)

                5、在try中声明的变量,跳出该结构后就不能使用;

                6、当catch中也抛出异常时,finally也会被执行;

                7、finally语句一定会被执行,比如在try、catch中有return语句;


/*
try{
    //可能出现异常的代码
}catch(异常类型1 变量名1){
    //处理异常的方式1
}catch(异常类型2 变量名2){
    //处理异常的方式2
}catch(异常类型3 变量名3){
    //处理异常的方式3
}...
finally{
    //一定会执行的代码
}

        方式二:throw + 异常类型

                1、写在方法声明处,指明此方法执行时,可能会出现的异常类型;

                2、异常代码后续的代码不会被执行;

                3、子类重写的方法所抛出的异常不能大于父类所抛出的异常;

                4、如果子类重写的方法没有抛出异常,则父类也不能抛出异常,如果子类重写的方法有异常,则必须用try--catch--finally方式处理;

public class EcmDef {
    public static void main(String[] args) {
        try {
            int i = Integer.parseInt(args[0]);
            int j = Integer.parseInt(args[1]);
            int result = ecm(i,j); //非运行时异常 需要显式处理(采用try-catch)
            System.out.println(result);
        }catch (NumberFormatException e){
            System.out.println("数据类型不一致");
        }catch (ArrayIndexOutOfBoundsException e){
            System.out.println("超出数组下标");
        }catch (ArithmeticException e){
            System.out.println("除以了0");
        } catch (EcDef e) {
            //获取异常中的输出语句
            e.getMessage();
        }

    }
    public static int ecm(int i, int j) throws EcDef {
        if (i < 0 || j < 0){
            //非运行时的异常 要处理(即在方法处用throw处理)
            throw new EcDef("分子或分母为负数了...");
        }
        return i / j;
    }
}

//自定义异常类
class EcDef extends Exception{
    static final long serialVersionUID = -3387510993124229948L;
    public EcDef(){
    }
    public EcDef(String msg){
        super(msg);
    }
}

二、项目三(开发团队调度软件)

(下方为代码)

CSDN

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值