异常是什么
我们还是举平时生活中的例子,比如在你小的时候家里来客人了,父母让你去买点喝的,对于我们来说买点喝的我们是可以自己解决的,但是可能遇到了一些问题,就是我们平时所说的异常,比如我们碰到了商店关门的异常。遇到这个异常我们有两种方法,一种是我们自己解决,就是我们平时的trycatch语句,比如我们可以自己换一家商店,亦或是我们干脆回家叫个外卖。
另一种则是我们把这个异常throw给上级,就是把这个异常告诉我们的父母让他们来处理。他们就会决定怎么处理这个异常,比如他们会自己点个外卖,或者你老爸会告诉你他经常去的另一家店,让你再去买。总之这就是异常,下面我们用专业的语句来定义一下异常。
当代码执行的过程中或者写代码的时候,出现了一些问题,那么这些问题称为异常。
为什么会有异常呢
程序设计过程中,可能因为逻辑原因(业务设计的问题),代码不符合规范,一些硬件不满足需求等,都可能出现异常。
异常的分类
这里我们先分一下错误和异常:
Throwable 是所有异常和错误的超类
Error 错误 一般意味无法恢复或者难以恢复的问题
Exception 异常 程序编写或者运行时出现的异常
编译异常IOException 在程序编写的时候就要求进行处理的异常,一般不是因为程序的原因造成,可能因为一些环境原因,比如FileNotFoundException
运行时异常 RuntimeException 一般因为程序的逻辑或者业务造成,编写的时候不要求强制处理,运行的时候才会触发,程序员可以处理。也就是说一个理想的程序,不应该有运行时异常
要求记住的异常
java.lang.ArithmeticException 运算异常 比如整数相除,除数为0
java.lang.ClassCastException 类型强制异常
java.lang.IllegalArgumentException 参数异常
IllegalStateException 状态异常
java.lang.IndexOutOfBoundsException 越界异常
java.lang.ArrayIndexOutOfBoundsException 数组越界
java.lang.StringIndexOutOfBoundsException 字符串越界
java.lang.NegativeArraySizeException 试图用负数创建数组
java.util.NoSuchElementException 没有元素异常
java.lang.NullPointerException 空指针异常(找不到对象)
java.lang.NoSuchMethodException 没有这个方法