写点什么

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

作者:喵手
  • 2022 年 7 月 26 日
  • 本文字数:2648 字

    阅读完需:约 9 分钟

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

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

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

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

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

一、前言

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

        前几天我们是讲完了双列集合之 map 集合,不知道大家掌握的如何,而对于今天,我要给大家讲一个有趣的知识点,如果我们的程序“生病”了,我们该如何去预防与治疗的相关知识点?这个不知道大家有没有想过?

二、本期教学目标


  • 能够区别程序中异常和错误

  • 掌握异常有哪些分类

  • 能够说出虚拟机处理异常的方式

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

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

三、异常概念

今天这一期,虽然会有点枯燥,毕竟都是概念性的知识点,但是又不得不教学,因为这在日后的项目实战中,也是至关重要的,对于异常或报错,程序也是常见事物,如果你说你不会处理异常,岂不是会被笑掉大牙,那么到底什么是程序异常呢?

1、概念

异常,顾名思义,就是不正常的意思,那到底对于该官方解释如下:指一个程序在执行过程中,出现了非正常的情况,最终会导致 jvm 虚拟机非正常停止,而这就是程序异常。

在 java 等面向对象编程语言中,异常也作为一个类,产生异常就是创建异常对象并抛出异常对象,而对于 java 而言,处理方式就是中断。但是有一点啊,大家要明显区分一下,异常并不是指程序语句语法有错,若语法有错,程序压根不可能通过正常编译的,更不会生成字节码文件,谈何运行呢,对吧。所有很多小伙伴在学到这一点的时候就会视觉错误,所以对于异常,想必大家是能有所理解了吧。

2、异常体系

其实我们压根不要去害怕有异常,觉得有异常就觉得程序不正常,这是错误的认知。对于异常其实本就在帮助我们找到程序中有存在问题的地方,异常是一个类,根类是 java.lang.Throwable,对于 Throwable 类它又有两个子类,分别为:

  • java.lang.Error

  • java.lang.Exception

而我们上述所说的异常,其实就是该子类中的一个,大家猜猜是哪个?

感兴趣的小伙伴也可以去看看相关源码,看看该子类都有那些常用方法,我这里就先不给大家演示这些了。毕竟我后续也会给大家讲,只是大家可以先去预习一下。

上述不是提到了那两个子类 Error 与 Exception。那你们知道为何上方这张图是一个只能尽量避免一个可以避免呢,你们知道这是为何?如果大家确实没有先去预习,那就看我给大家讲。

  • java.lang.Error

       表示严重错误 error,无法通过编译的错误,只能编译前避免或者解决掉,比如人得了绝症,没办法解决掉。

  • java.lang.Exception

       表示异常,指异常产生后是必须要处理的,可以通过代码的方式处理异常,比如人得了感冒、普通流感等,人肯定是能吃药就治好的。

3、Throwable 常用方法

上述说到大家要预先预习功课,而这里其实就算是大家对该源码的一点预习与结合我给大家讲的理论相结合,这样你们才能快速吸收并加以实际运用。

说起类,基本都要知道类的常用基本方法,异常根类 Throwable,我们这里就来给大家讲讲,它有哪些常用方法。

  • public void printStackTrace() :

作用:打印异常详细信息。其详情包含了异常的类型、原因,还包括异常出现的位置。在开发和调试阶段,都得使用 printStackTrace 帮助我们定位异常发现位置。

源码展示:

public void printStackTrace() {    printStackTrace(System.err);}
复制代码
  • public String getMessage() :

作用:获取发生异常的原因。基本用法就是通过该方法获取异常原因好直接反馈用户错误原因。

源码展示:

public String getMessage() {    return detailMessage;}
复制代码
  • public String toString() :

作用:获取异常的类型和异常描述信息,其实这个就与 printStackTrace()有点功能重复了。

源码展示:

public String toString() {    String s = getClass().getName();    String message = getLocalizedMessage();    return (message != null) ? (s + ": " + message) : s;}
复制代码

四、异常演示

       接下来,我就简单给大家制造一个代码发生异常的场景吧,比如我们都知道对于数组而言,它是有下标之说,也是通过下标指定获取数组中的某个元素,对吧,那么如果我获取一个不存在的下标,那么它会发生什么?

具体演示代码如下:

 @Test    public void test() {
//定一个数组并初始化 int[] nums = {1, 2, 3};
//获取下标为2的元素并打印。 System.out.println("下标为2的元素为:" + nums[2]);
//获取下标为5的元素并打印。 System.out.println("下标为5的元素为:" + nums[5]); }
复制代码

控制台打印截图:

如上图截图所示,你们看到了什么?下标为 2 是正获取到了元素并正常打印,而对于一个下标不存在的获取,就发生了异常并抛出该异常: java.lang.ArrayIndexOutOfBoundsException: 5,这个 5 就是发生异常的原因,而对于 java.lang.ArrayIndexOutOfBoundsException 这是异常类型。at 而这句 com.example.demo.java.ThrowableTest.test(ThrowableTest.java:33) 是告诉你具体哪一行发生异常,好让你能针对性的去排查异常并解决。

​​... ...

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

五、文末

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

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

wished for you successed !!!

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

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

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


发布于: 1 小时前阅读数: 8
用户头像

喵手

关注

还未添加个人签名 2022.07.05 加入

还未添加个人简介

评论

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