第12章 异常

12 异常

exception

1.异常的概念

1.1 导入

出现异常之后,程序就会崩溃退出,不能继续往下执行了。
这样不好,因为一个不太致命的问题,就导致了整个系统的崩溃。
—> java提供了异常处理机制 try catch 保证程序的健壮性

public class Exception01 {
    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 0;

        //程序运行到这一句话的时候,程序会抛出异常
        //程序抛出异常后 就会退出崩溃了,不会继续运行了
        int res = num1/num2;
        
        //即这句话不会输出
        System.out.println("程序继续执行");
    }
}

在这里插入图片描述

快捷键:
1、选中可能出错的代码块
2. ctrl + alt +t ,选中 try…catch
3. 程序抛出了异常也可以继续执行,保证程序的健壮性


1.2异常介绍

  • 异常是什么?
    是程序执行过程中发生的不正常的情况。
    开发过程中的语法和逻辑错误不是异常

1.3 异常分类

  • 异常的分类

    • 1)ERROR 错误 java虚拟机无法解决的严重问题
      比如栈溢出,OOM(out of memory)
    • 2)Exception 异常
      比如:空指针访问试图读取不存在的文件,网路连接中断.
      又分为两大类:运行时异常(运行时 发生的异常) 和 编译性异常(编程时,编译器检查出来的异常)

2.异常的体系图

在这里插入图片描述在这里插入图片描述

3.常见的异常

常见的运行时异常
1)空指针异常
在这里插入图片描述
2)运算异常
在这里插入图片描述
3)数组越界异常
在这里插入图片描述
4)类型转换异常

在这里插入图片描述
5)数字格式不正确异常在这里插入图片描述
在这里插入图片描述

编译异常
编译时期发现的异常,编译时期就必须处理的异常,否则代码通不过编译
常见的编译异常

4.异常处理概念

1)try-catch-finally

程序员在代码中捕获异常 自行处理

在这里插入图片描述
使用细节:
//1如果异常发生了,那么异常后面的语句不会执行,直接进入到catch块。
//2.如果程序顺序执行了,没有发生异常,那么会顺序执行完try里面的代码,那么catch块不会执行。
//3.如果希望不管是否发生异常,都执行某代码块(比如关闭连接,释放资源),等,则使用finally代码块
//4.可以有多个catch语句,铺货不同的异常,进行不同的业务处理。要求父类异常在后,子类异常在前。如果发生异常,只会匹配一个catch
//5.可以进行try-finall配合使用,相当于没有进行异常捕获,因此会直接崩掉退出。应用场景:执行一段代码,无论是符发生异常,都要执行某个业务逻辑。
在这里插入图片描述

在这里插入图片描述

2)throws

将发生的异常抛出,交给调用者(方法)来处理,最顶级的处理者是JVM。

JVM的处理机制:
1.输出异常信息 2.退出程序。
如果一直往上throw,throw到了JVM虚拟机的时候,JVM就遵循上面的处理机制。
如果程序里面没有对异常的处理方式,会默认往上throw,到JVM层级,就打印异常,然后中断退出程序。

定义:如果一个方法付 可能生成某种异常单不确定如何处理这种异常 则词方法应该显示抛出异常,表明该方法不对这些异常进行处理,而由该方法的调用者负责处理。

2)在方法声明中用户throws语句可以声明抛出异常的列表,throws后面的异常类型可以是方法中产生的异常类型,也可以是父类

注意:

  • 编译型异常,程序必须中止处理,比如用try-catch或者throw
  • 对于运行异常,有默认的处理方法,就是throw。
  • 子类重写父类方法的时候,对于抛出异常的规定:子类重写的方法,所抛出的异常类型要么和父类抛出的异常类型一致,,要么为抛出的易车行类型的子类型

5.自定义异常

6.throw和throws的对比

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值