异常及异常处理

简单学习异常处理

异常分类

异常主要分为 运行时异常编译时异常
运行时异常也叫非受查异常,是程序在运行时出现错误时的一种通知机制。它的出现是在程序运行时错误运行状态栏报出的一种红色异常信息。这时的程序运行不能通过,无法达到预期结果。如下图所示:
图一
编译时异常也叫受查异常,是程序在编译时出现错误时的一种通知机制。主要是在程序编写时出现错误的提醒。表现为程序代码下方出现的红色波浪线或者程序代码变为红色。这时程序编译不能通过。如下图所示:
图二

异常语法

异常的语法如下:

try{
//有可能出现异常的代码语句
}catch(//异常类型 异样对象){
//异常处理
}finally{
//异常出口
}

try代码块中放的是可能出实现的异常代码。
catch代码块中放的是出现异常后的处理行为。
finally代码块中放的是代码处理后的善后代码,会在最后执行。

public class ExceptionStudy {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double a = scanner.nextDouble();
        double b = scanner.nextDouble();
        try {
            double num = div(a , b);//当b为0时,除法计算会报出异常
            System.out.println(num);//当上一行程序运行出现异常时,不会执行该异常,直接执行catch语句。
        } catch (ArithmeticException e) {
            e.printStackTrace();
        }finally {
            System.out.println("计算过程完成!");
        }
        System.out.println("代码执行完毕!");
    }

    public static double div(double a , double b) throws ArithmeticException{
        if(b == 0){
            throw new ArithmeticException("除数为零,算术异常!");
        }
        double num = a / b;
        return num;
    }
}

异常存在代码运行结果如图所示:

代码无异常运行结果如图所示:在这里插入图片描述

异常的执行过程

程序首先执行异常代码前的语句,到了异常代码时首先执行try语句中的代码,如果try语句中的代码出现异常就会终止try中的代码,转而执行catch语句中的代码进行异常匹配,如果匹配到了相同的异常类型就会执行该异常类型中的语句,如果没有匹配到就会将异常依次向上传递到上层调用者,无论是否找到匹配的异常类型,都会执行finally代码块中的代码。直到找到异常匹配类型为止,或者直到传递到main方法也没找到合适的代码处理异常,就会交给JVM来进行处理,此时程序会异常终止。

自定义异常

手动抛出异常是通过throws 关键字后面跟上异常类型,同时根据抛出的异常来对异常添加,修改一些信息,或者指定一些描述信息。具体如上述代码演示所示。

自定义异常类 根据一些实际情况,有时需要自定义一些异常,这时候可以使用自定义异常类来处理这些实际情况。在自定义类的使用中可能基于使用情况要进行继承异常类。继承异常类主要有两种,一种是Exception类或者RuntimeExceotion类,继承自Exception类的异常一般默认为受查异常,而继承自RuntimeExceotion类的异常一般默认为非受查异常。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值