异常类结构层次图
Throwable:有两个重要的子类:Exception(异常)和Error(错误),二者都是Java异常处理的重要子类。
Error :表示系统错误 ,属于严重严重错误 如内存不足,内存溢出,由JVM抛出,表示严重到程序无法处理,Java虚拟机(JVM)一般会选择线程终止。
Exception:表示需要程序捕获,或者需要程序进行处理的异常,他的处理的是由于程序设计 如除0错误 或者外部输入等引起一般问题,如读取文件流未读到
运行异常和受检异常
Exception又分为运行异常和受检异常
(1)受检查的异常:这种在编译时被强制检查的异常称为"受检查的异常"。即在方法的声明中声明的异常。如IO异常
(2)运行时异常 :运行时执行了错误的操作, 如数组越界 ,因此编译器不检查这些异常。
常见的运行时异常:
NullPointerException:空指针异常,一般都是在null对象上调用方法了。
NumberFormatException:字符串转换为数字时,例如 int i= Integer.parseInt(“ab3”);
ArrayIndexOutOfBoundsException:数组越界,比如 int[] a=new int[3]; int b=a[3];
ClassCastException:类型转换错误,比如 Object obj=new Object(); String s=(String)obj;
ArithmeticException:算术错误,典型的就是0作为除数的时候。
IllegalArgumentException:非法参数,在把字符串转换成数字的时候经常出现的一个异常,我们可以在自己的程序中好好利用这个异常。