当前位置: 首页 > news >正文

异常处理的过程

package Day19;/*
 *@author wanghongyuan
 *@Create 2020/12/28 7:25
 */
/*
    下面这个异常出现系统会做三件事情:
    1.是在主方法执行的时候,跳到了getElement方法里面,发现这个方法访问数组的索引“3”,而数组中并没有“3”这个索引
      这个时候,JVM就会输出程序异常
      JVM做了两件事:
      (getElement方法把异常对象抛给main方法)
      1.JVM会根据异常产生的原因创建一个异常对象,这个异常对象包含了异常产生的(内容,原因,位置)
ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
      2.getElement方法中没有处理异常的处理逻辑(try....catch),那么JVM就会把这个异常对象抛出给方法的调用者
         main方法来处理这个异常。
   (main方法把异常对象抛出给JVM)
    2.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
        main方法接收到了这个异常对象,main方法也没有这个异常处理的逻辑
        继续把这个异常抛出给main方法的调用者JVM处理。
   3.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
         JVM接收到了这个异常对象,做了两件事情
            1.把异常对象的(内容,原因,位置)以红色的字体打印在控制台
            2.Jvm会终止当前还在运行的java程序-->中断处理

 */
public class Demo02Exception {
    public static void main(String[] args) {
        int[] arr = {1,2,3};
        int e = getElement(arr, 3);
        System.out.println(e);
    }

    private static int getElement(int[] arr, int i) {
        int ele = arr[i];
        return ele;
    }
}

package Day17;/*
 @Author wanghongyuan
  @Date 2020/12/28 
 
*/

public class Demo01Throw {
    public static void main(String[] args) {
        // int[] arr ={3,4};
        // int[] arr = null;
        int[] arr = new int[3];
        int w = getElement(arr, 2);
        System.out.println(w);
    }

    private static int getElement(int[] arr,int index) {
        if (arr == null){
            throw new NullPointerException("空指针异常");
        }else if (index<0 || index> arr.length-1){
            throw new IndexOutOfBoundsException("数组索引越界异常");
        }
        int arr1 = arr[index];
        return arr1;
    }
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 异常的几个注意事项
  • 如何自定义异常类
  • 2020年年终总结
  • Thread类的使用方法
  • 异常的总结
  • Thread类的获取线程名称和设置线程名称
  • Runnable类
  • 匿名内部类方式实现线程的创建
  • ThreadSafe解决线程安全的问题
  • 资源唤醒案例
  • 线程池的使用
  • Lambda标准格式
  • File类的构造方法
  • 递归计算
  • 使用递归遍历目录
  • JS 中的深拷贝与浅拷贝
  • 0基础学习移动端适配
  • IndexedDB
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Tornado学习笔记(1)
  • vue.js框架原理浅析
  • 阿里云Kubernetes容器服务上体验Knative
  • 程序员最讨厌的9句话,你可有补充?
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 软件开发学习的5大技巧,你知道吗?
  • 通信类
  • 选择阿里云数据库HBase版十大理由
  • ​configparser --- 配置文件解析器​
  • ​TypeScript都不会用,也敢说会前端?
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • #### golang中【堆】的使用及底层 ####
  • #1014 : Trie树
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (二十四)Flask之flask-session组件
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (全注解开发)学习Spring-MVC的第三天
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (转)【Hibernate总结系列】使用举例
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .FileZilla的使用和主动模式被动模式介绍
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET 8.0 发布到 IIS
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .net 获取某一天 在当月是 第几周 函数
  • .net后端程序发布到nignx上,通过nginx访问
  • .net实现客户区延伸至至非客户区
  • [C#]winform部署PaddleOCRV3推理模型
  • [C++]: std::move
  • [C++][数据结构][算法]单链式结构的深拷贝
  • [codevs 1515]跳 【解题报告】