写点什么

java 零基础入门 - 异常、线程 (中)

作者:喵手
  • 2022 年 7 月 25 日
  • 本文字数:2333 字

    阅读完需:约 8 分钟

java零基础入门-异常、线程(中)

哈喽,各位小伙伴们好,我是喵手。

今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流 学习,互相学习,才能成长的更快,对吧。

我是一名 java 开发,所以日常接触到最多的就是 java 啦,所以我趁自己有空,就来好好回忆,把自己学到的会的,进行输出,不图什么有回报,只想能帮助到更多的小伙伴,就好。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对喵手我创作道路上最好的鼓励与支持!

一、前言

       论前几期啊,我们是分别讲了Object类Date类FormDate类Calendar类System类StringBuilder类,不知道大家掌握的如何,如果没有及时巩固的同学,可以看我这里,我给大家罗列了下,快速学习通道,只希望能帮助到大家更好的学习与成长,这就是我写作的初衷。

        上一期我们是学习了异常相关的一些概念知识,然后演示了一下异常的触发及控制台异常的一些信息如何判断及如何定位异常发生代码行,对吧。今天我们就要来继续深入学习异常类,学习异常如何处理、自定义异常及处理自定义异常,非常的硬核,希望大家好好听。

二、本期教学目标​

  • 能够列举出常见的三个运行期的异常。

  • 能够使用 try...catch、throws 等关键字处理异常。

  • 能够自定义异常类。

  • 能够处理自定义异常类。

三、正文

1、异常分类

        说起异常,难道就一种吗?不不不,异常也是分类的,可大体分为以下两类:

  • 编译时异常:checked 异常。表示在编译时期就会检查是否存在异常,如果没有对异常进行异常处理,则会编译失败。

  • 运行时异常:runtime 异常。表示在运行时期检查是否存在异常,但在编译时期运行时异常是不会编译器检测到的,借此对于该异常是可以处理的。

如下是我给大家总结的一张异常分类流程图,帮助大家能更清晰的认识。

所以大家可能就会想一个问题了,如果程序出现异常,我们怎么办?有没有办法去对异常做一些处理,这是有的。一旦异常出现,我们就要对出现异常的代码进行修复。

2、异常处理

对于异常处理,有如下五个关键字:try、catch、finally、throw、throws。这些我会一一给大家讲解的哈。我们先来学一个关键字--throw。

在平时写代码时,我们必须要考虑到程序出现异常的情况,比如定义方法时,调用方法入参类型不对,那我们就应该抛出异常告知调用者,入参类型有误,请传递正确的入参类型。就好比这种情况,我们就应该抛出异常的方式来告知调用者。

java 就给我们提供了这么个关键字,throw,专门用于抛出异常对象。那么具体对于 throw 如何抛出一个异常对象?请继续往下看。

  1. 创建一个异常对象,可封装一些自定义的提示信息好告知调用者。

  2. 需要将异常对象反馈给调用者,具体怎么反馈呢?将这个异常对象传递到调用者处,并结束当前方法。

如下是对于 throw 关键字的使用格式:

throw new 异常类名(参数);
复制代码

我给大家列举几个例子,你们就会明白了。

throw new NullPointerException("要访问的arr数组不存在");
复制代码


throw new ArrayIndexOutOfBoundsException("该索引在数组中不存在,已超出索引范围");
复制代码

3、实例演示

如上我是已经教学了如何通过 throw 关键字来进行异常抛出,那么我们既然学习完抛出异常的格式后,我再通过下面程序演示下 throw 的具体使用。这也是边教学边实战。

   @Test    public void test2() {
//定义一个数组 int[] arr = {1, 2, 3, 4};
//根据数组角标获取元素。 int index = 5; int value = this.getArrByIndex(arr, index);
System.out.println(index + "角标值为:" + value); }
复制代码

点击并拖拽以移动如下是自定义异常抛出的具体使用。private int getArrByIndex(int[] arr, int index) {

    if (index < 0 || index > arr.length - 1) {        throw new ArrayIndexOutOfBoundsException("该索引在数组中不存在,已超出角标范围");    }
return arr[index];}
复制代码

这里就需要大家注意,至于何时要异常抛出?你就可以这么理解,如果条件满足,当执行完 throw 抛出异常后,方法就已经终止运行了,这时也就结束了当前方法,并将异常返回给调用者。这时也就是我们通过 throw 关键字进行异常信息抛出。大家可以看下上方示例的结果控制台展示:

给大家解释一下,示例上的 arr 数组长度为 4,下标范围为[0,3],而我获取 arr[5],下标肯定是不存在的,所以肯定会进入异常判断,接着就执行 throw 语句,抛出异常信息。

4、总结

总而言之,如果程序出现了异常,我们就可以通过 throw 将异常抛出,也就是将问题返回给方法调用者。而对于调用者而言,该如何处理呢?其实呢调用者也是有多种选择,一它可以将异常捕获自己处理,二是它可以不管继续将异常抛出去,使用 throws 声明处理。不过这些我讲的目前你们可能不是能理解,我后续会讲到的,放心哈。

​​​... ...

好啦,以上就是本期内容的全部教学内容啦,如果对文中的任何知识点有疑问,欢迎评论区评论留言呀,我看见都会一一解答的。

四、文末

       教学是结束了,但是有些话不知我但讲不当讲,啊哈哈, 可我还是想说给你们听听。如下是我很喜欢的一句话,我打算送给你们,希望我们都能变得更好更优秀。

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!

-------------------------------------------

⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

-------------------------------------------


发布于: 19 小时前阅读数: 16
用户头像

喵手

关注

还未添加个人签名 2022.07.05 加入

还未添加个人简介

评论

发布
暂无评论
java零基础入门-异常、线程(中)_Java_喵手_InfoQ写作社区