javase异常的捕获与抛出以及自定义异常

异常

1.error和exception

软件在运行过程中,可能出现的意外问题,比如被除数做0,递归中没有递归头,陷入循环……

检查性异常

用户错误或者问题引起的异常,这些程序员无法预料的。

运行时异常

运行时异常是可能被程序员避免的异常,与检查性异常相反,运行时异常可以在编译时被忽略。

错误

错误不是异常,而是脱离程序员控制的问题,错误在代码中通常被忽略,例如,栈溢出,这是在编译时也检查不到的。

在java中会把异常当做对象处理,所有异常就分为error和exception,error一般是无法预料到的异常,exception一般是可以预料或者在编译的时候就会报出来的异常。

2.捕获和抛出异常

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

try,catch,finally经常是配合使用的!!

package com.javase.exception;

/**
 * @author panglili
 * @create 2022-07-14-9:49
 */
public class ExceptionTest {
    public static void main(String[] args) {
        int a=1;
        int b=0;
        try{ //监控区域
            System.out.println(a/b);
        }catch(ArithmeticException e){
            //监控到异常后处理办法
            System.out.println("程序异常!");
        }finally{
            //有没有异常都会执行的
            System.out.println("finally执行了");
        }

    }
}

throw手动抛出异常;

package com.javase.exception;

/**
 * @author panglili
 * @create 2022-07-14-9:59
 */
public class ExceptionThrow {
    public static void main(String[] args) {
       ExceptionThrow.test(1,0);
        //预知到可能出现的异常后,手动抛出

    }

    public static void test(int a,int b){
        if(b==0){
            //一般用在方法中,即使此刻没有计算也会因为b=0而抛出异常
            throw new ArithmeticException();
        }
    }
}

throws假如此时方法不能处理异常就在方法头上继续向上抛出!

public static void test(int a,int b)throws ArithmeticException {
    if(b==0){
        //一般用在方法中,即使此刻没有计算也会因为b=0而抛出异常
        throw new ArithmeticException();
    }

抛出之后还是需要try,catch去捕获!

3.自定义异常

用户自定义异常只需要继承exception类即可。

package com.javase.exception;

/**
 * @author panglili
 * @create 2022-07-14-10:08
 */
public class MyException extends Exception {
    //传递数字大于10就去抛出异常
    private int detail;

    public MyException(int a){
        this.detail=a;
    }

    //重写父类打印异常的信息

    @Override
    public String toString() {
        return "myexception";
    }
}
package com.javase.exception;

/**
 * @author panglili
 * @create 2022-07-14-10:14
 */
public class Test {

    //可能存在的异常
    public static void test(int a) throws MyException{
       if(a>10){
           throw new MyException(a);
       }
        System.out.println("ok");
    }

    public static void main(String[] args) {
        try {
            test(1);
        } catch (MyException e) {
            e.toString();
            e.printStackTrace();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值