关于Java通过throw主动抛出异常

异常

Java提供了许多异常自动处理机制,这里主要聊一下异常的主动抛出

异常处理机制

异常处理五个关键字 try、catch、finally、throw、throws

try—catch—finally

int a = 1;
int b = 0;
try{
System.out.println(a/b);
}catch(异常的类 对象){
    //要进行的操作
}finally{
    //无论是否出现异常,finally都会执行
}

解释

当try中的保护代码块出现异常时,异常会作为参数与catch中声明的异常类型进行匹配,匹配成功则运行对应catch的代码块

  • 不管是否出现异常,会继续执行后续代码

注意

  • 可以有多个catch,异常类型由上往下判断,且众多catch代码块只执行一个
  • catch捕获的异常类型,范围小的放上面
  • finally可以不要

throw主动抛出异常

  • 对于明显的不合法操作,可以通过throw主动抛出异常

  • 一般在方法中使用

public void test(int a,int b) throws ArithmeticException{
if(b == 0){
    //若b==0,主动抛出异常
   throw new ArithmeticException();
}else{
   System.out.println(a/b);
     }
}

throws抛出异常

假如方法中解决不了这个异常,在方法上抛出异常

public void test(int a,int b) throws 异常类型{
   //要写出什么时候会抛出异常
}

注意

如果在一个方法后面用 throws 声明了可能抛出的异常类型,在调用该方法时必须必须用 try 包含方法,且在 catch 一一声明对应的异常

public class main {
    //方法test声明可能抛出的两种异常
    public void test(int a) throws Exception1,Exception2 {
        //若a>50时抛出一个异常
        if(a>50)
        throw  new Exception1(a);
        if...}

        try {
            //使用该方法时要用try
            new main().test(60);
            System.out.println("1554");
            //分别捕获对应的异常
        } catch (Exception1 e) {
            e.say();
        }catch (Exception2 d){

        }

以上方式让调用代码的人通过try—catch的方式对异常进行捕获

另一种方式

也可以在方法内部捕获异常

//定义一个除法运算的方法
public double divide(double a,double b) {
    	//若除数为令,抛出异常
        if(b==0){
            try{
                throw new Exception1(b);
         //在方法里面捕获异常
            }catch (Exception1 e){
                e.toString();
            }
        }
        return a/b;
}

在此时在调用方法时则不需要调用者捕获异常

public static void main(String[] args) {
        main m = new main();
    	//此时不需要用try—catch捕获异常
        System.out.println(m.divide(1,0));
    }
}
  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值