out of bounds(全栈2019Java异常第一章认识异常)

难度 初级学习时间 30分钟适合人群 零基础开发语言 Java开发环境JDK v11IntelliJ IDEA v2018.3提示 本教学属于系列教学,内容具有连贯性,本章使用到的内容之前教学中都有详细讲解。1.什么...

难度

初级

学习时间

30分钟

适合人群

零基础

开发语言

Java

开发环境JDK v11IntelliJ IDEA v2018.3提示

本教学属于系列教学,内容具有连贯性,本章使用到的内容之前教学中都有详细讲解。

1.什么是异常?

在回答这个问题之前,我们先来看一段程序。

“全栈2019”Java异常第一章:认识异常

上述程序很简单,就是先计算1除以0的值,将其值存储到x变量中,然后打印x变量的值。

这里有同学可能就要问了,除数怎么可能为0呢?这显然是错误的。

当然,除数为0,这个表达式写法上没错,但是在计算上肯定是错误的,而且这个错误是我故意造成的,就是想让大家看看,当计算机遇到错误时,它会怎么处理。

运行程序,执行结果:

“全栈2019”Java异常第一章:认识异常

错误信息:

“全栈2019”Java异常第一章:认识异常

文字版:

Exception in thread "main" java.lang.ArithmeticException: / by zero

at main.Main.main(Main.java:12)

从运行结果来看,当计算机遇到错误时,当然了,该错误是在Java程序中出现的,程序会停止运行,并打印错误信息。

咦?你怎么知道程序是停止运行而且没有往下继续运行的呢?

好,各位,咱们把这段错误分两部分来看:

第一部分:错误信息-出的什么错?

Exception in thread "main" java.lang.ArithmeticException: / by zero

第二部分:错误位置-错在什么地方?

at main.Main.main(Main.java:12)

回答上述问题,只需看第二部分,很明显,它告诉我们,错误出在Main.java这个文件的第12行:

“全栈2019”Java异常第一章:认识异常

大家看到了吗?是我们写1除以0的代码所在的行。他就告诉我们这一行出了问题,出了什么问题?马上下一个问题来解答,先回答程序是不是遇到问题就停止运行了,没有继续往下执行。

请大家观察第14行:

“全栈2019”Java异常第一章:认识异常

看到了什么?是不是一个输出语句,此行代码是打印x的值。我们再来看程序执行结果中,有打印x的值吗?来看看:

“全栈2019”Java异常第一章:认识异常

我们发现,并没有打印x的值,说明程序遇到错误就停止运行,没有继续往下执行。

好啦,有同学就想问,我们已经知道哪里出错了,怎么来看出的是什么错呢?

请大家回头看看我们刚刚描述的:错误的第一部分和错误第二部分。想要知道错误出在哪里,就去看第二部分,想要知道错误是什么,就去看错误的第一部分。

接下来,我们来看看错误的第一部分:

Exception in thread "main" java.lang.ArithmeticException: / by zero

翻译成中文就是:

线程“main”中的异常java.lang.ArithmeticException:/ by zero

单词解释:

Exception:异常。

thread:线程。

其中,Exception就是我们本章的内容,来认识它。thread,也就是线程,后面章节马上会出教学。线程没学,咱们先不管,主要来说说这个Exception(异常)。

我们上面程序发生的异常是什么?

是java.lang.ArithmeticException。这是一个异常类。

异常类是什么?

在Java中,我们把程序发生的异常(或发生的错误)用类来描述,这样的类被称为异常类(异常类型)。

java.lang.ArithmeticException是用来描述什么异常?

java.lang.ArithmeticException用来描述算术异常。比如:除数为0。

错误信息中“java.lang.ArithmeticException: / by zero”冒号后面的是什么?

是错误原因。/ by zero是除数为0了的意思。

好啦,程序就先分析到这里,接下来,我们来看看异常的定义。

2.异常的定义

异常是在程序执行期间发生的事件,它会破坏程序指令的正常流程。

这段定义,我们来分两部分解释。

第一句:异常是在程序执行期间发生的事件

也就是说,即使你程序有异常,只要你不运行,异常就不会出现,这个很好理解。

第二句:它会破坏程序指令的正常流程

这个也很好解释,上一小节中,我们也体会到了,当第12行代码发生错误时,这个异常已经破坏了程序的正常运行流程,它会导致程序停止,不再继续往下执行。也就是破坏了程序指令的正常流程。

有人问,什么叫程序指令?

你可以把它理解为一行一行的代码。

本章咱们简单的认识了异常,下一章我们来学习遇到异常,该如何处理它?异常被处理后,程序就不会停止运行。

3.常见的异常

在我们日常开发中,最常见的异常有空指针异常(NullPointerException)和数组下标越界异常(ArrayIndexOutOfBoundsException)。

下面暂时只是演示两种异常,不做详细处理,详解处理他们的任务放在下一章内容中。

演示:

请制造一个空指针异常。

请观察程序运行结果。

代码:

Main类:

“全栈2019”Java异常第一章:认识异常

结果:

“全栈2019”Java异常第一章:认识异常

错误信息:

“全栈2019”Java异常第一章:认识异常

文字版:

Exception in thread "main" java.lang.NullPointerException

at main.Main.main(Main.java:14)

从运行结果来看,我们可以看到程序产生了NullPointerException,也就是空指针异常。

空指针异常产生原因就是引用的对象为NULL。

至于怎么处理该异常下一章会有详细的讲解。

接着,我们来演示一个数组下标越界异常。

演示:

请制造一个数组下标越界异常。

请观察程序运行结果。

代码:

Main类:

“全栈2019”Java异常第一章:认识异常

结果:

“全栈2019”Java异常第一章:认识异常

错误信息:

“全栈2019”Java异常第一章:认识异常

文字版:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 1

at main.Main.main(Main.java:14)

从运行结果来看,我们可以看到程序产生了ArrayIndexOutOfBoundsException,也就是数组下标越界异常。

数组下标越界异常产生原因就是访问到了超过数组长度-1的下标。

至于怎么处理该异常下一章会有详细的讲解。

总结异常是在程序执行期间发生的事件,它会破坏程序指令的正常流程。在Java中,我们把程序发生的异常(或发生的错误)用类来描述,这样的类被称为异常类(异常类型)。

至此,Java中认识异常相关内容讲解先告一段落,更多内容请持续关注。

答疑

如果大家有问题或想了解更多前沿技术,请在下方留言或评论,我会为大家解答。

下一章

“全栈2019”Java异常第二章:如何处理异常?

学习小组

加入同步学习小组,共同交流与进步。

方式一:关注头条号Gorhaf,私信“Java学习小组”。方式二:关注Gorhaf,回复“Java学习小组”。全栈工程师学习计划

关注我们,加入“全栈工程师学习计划”。

“全栈2019”Java异常第一章:认识异常

版权声明

原创不易,未经允许不得转载!

  • 发表于 2022-11-16 11:19:15
  • 阅读 ( 154 )
  • 分类:科技

0 条评论

请先 登录 后评论
林健辉
林健辉

304 篇文章

你可能感兴趣的文章

相关问题