今日浅学异常

异常

了解异常

  1. 什么是异常?
    • 程序出现的错误。
  2. 异常体系最上层的父类是谁?可以分为几类
    • 最上层的父类是Exception类
    • 可以分为两类:编译时异常和运行时异常
  3. 编译时异常与运行时异常的区别
    • 编译时异常:没有继承RunTimeException的异常,直接就继承于Exception,在编译时出现的异常,通常来检验语法错误。
    • 运行时异常:RunTimeException本身和子类,在编译阶段没有错误提示,只在运行时报错

异常的作用

  1. 异常用来查询BUG的关键参考信息。
  2. 异常可以作为方法内部的一中特殊返回值,以便通知调用者底层的执行情况。

异常的处理方式

  1. JVM虚拟机处理

    • 把异常的名称,异常原因及异常出现的位置等信息输出返回到控制台
    • 遇到异常时,程序就会停止运行,下面的代码不会执行
  2. 自己处理(try catch)

    • 目的:到代码出现异常时代码继续执行。

    • 格式:

      try{
      	存放可能出现异常的代码
      }catch(异常类名 变量名){
      	异常的处理代码
      }
      
    • 灵魂四问:

      1. 如果try中没有遇到问题,怎么执行?

        • 如果没有遇到问题就不会中catch后域中的代码,接着执行下面的代码。
      2. 如果try中可能会遇到多个问题,怎么执行?

        • 如果可能意见多个问题,就写多个catch分别去针对的不同的异常进行处理。

          try {
                      //存放可能出现异常的代码
                      System.out.println(arr[4]);
                      
                      String s = null;
                      s.equals("abd");
                  } catch (ArrayIndexOutOfBoundsException e) {
                      //处理异常的代码
                      System.out.println("下标越界异常");
                  }catch (NullPointerException e){
                      System.out.println("空指针异常");
                  }catch (Exception e){
                      System.out.println("异常");
                  }
                  System.out.println(arr[3]);
          
        • 多个问题也可以写所有异常的共同父类集中处理,注意在多个catch的情况下,捕获共同父类异常的catch必须写在最下面。

      3. 如果try中遇到的问题没有被捕获怎么执行?

        • 如果遇到的问题没有被捕获,则JVM虚拟机将对异常进行捕获,同时程序终止运行。
      4. 如果try中遇到问题,那么try下面的其他代码还会执行吗?

        • try中有多行代码,则在捕获异常后try里面的其他代码将不会继续执行。
  3. 手动抛出异常(throw和throws)

    • throws,作用于方法的声明部分,用来告诉该方法的调用者这个方法可能存在哪些异常
    • throw,作用在方法体当中,通常配合判断来手动抛出异常的对象来交给调用者。一旦抛出异常,程序结束。

自定义异常

  1. 为什么要自定义异常。
    • 虽然java当中有很多已经定义好的异常类,但都不能准确的帮我们描述出异常的信息,这是我们就要器自定义异常,当再遇到异常时能准确的显示异常的信息。
  2. 自定义异常的步骤
    1. 定义异常类
      • 自定义异常类的类名要见名知意,通常
      • 写继承关系
        • 运行时异常就要继承RenTimeException类
        • 编译时异常要继承Exceotion类
        • 由参数引起的异常是运行时异常,本地信息错误是编译时异常
      • 写空参构造
      • 写带参构造
        • 参数一般是异常的提示信息,所以形参为String类型。
  • 22
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值