难度
初级
学习时间
30分钟
适合人群
零基础
开发语言
Java
开发环境JDK v11IntelliJ IDEA v2018.3提示
本教学属于系列教学,内容具有连贯性,本章使用到的内容之前教学中都有详细讲解。
1.什么是异常?
在回答这个问题之前,我们先来看一段程序。
上述程序很简单,就是先计算1除以0的值,将其值存储到x变量中,然后打印x变量的值。
这里有同学可能就要问了,除数怎么可能为0呢?这显然是错误的。
当然,除数为0,这个表达式写法上没错,但是在计算上肯定是错误的,而且这个错误是我故意造成的,就是想让大家看看,当计算机遇到错误时,它会怎么处理。
运行程序,执行结果:
错误信息:
文字版:
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行:
大家看到了吗?是我们写1除以0的代码所在的行。他就告诉我们这一行出了问题,出了什么问题?马上下一个问题来解答,先回答程序是不是遇到问题就停止运行了,没有继续往下执行。
请大家观察第14行:
看到了什么?是不是一个输出语句,此行代码是打印x的值。我们再来看程序执行结果中,有打印x的值吗?来看看:
我们发现,并没有打印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类:
结果:
错误信息:
文字版:
Exception in thread "main" java.lang.NullPointerException
at main.Main.main(Main.java:14)
从运行结果来看,我们可以看到程序产生了NullPointerException,也就是空指针异常。
空指针异常产生原因就是引用的对象为NULL。
至于怎么处理该异常下一章会有详细的讲解。
接着,我们来演示一个数组下标越界异常。
演示:
请制造一个数组下标越界异常。
请观察程序运行结果。
代码:
Main类:
结果:
错误信息:
文字版:
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学习小组”。全栈工程师学习计划
关注我们,加入“全栈工程师学习计划”。
版权声明
原创不易,未经允许不得转载!