Java Web开发常见异常及排查方法记录
突然想写一篇博客,记录下java web开发常见异常及排查方法(持续更新,想到就会添加)
先简单讲一下异常的分类
所有异常的根类是Throwable。直接继承自Throwable的是Error和Exception。Error表明发生的是严重的错误,程序很难处理和恢复的错误,比如OutOfMemoryError(内存溢出)。而Exception则要分两种,一种是受检异常,如果一个方法声明了会抛某个受检异常的话,IDE就会提示你必须用捕获这个异常进行处理,或者在方法上声明会抛异常,把异常再抛向上层,还有一种是非受检异常,即继承了Exception的直接子类RuntimeException的异常,如NullPOinterException,明明方法没有声明会抛异常,但运行时还是可能会抛这些非受检异常,而即使声明会抛非受检异常,IDE也不会提示一定要捕获或声明向外抛这些异常。
下面就介绍下java开发中常见的异常:
1、NullPointerException,差不多算是最常见的异常了,也是比较好排查的,基本上看异常栈最上面一行,提示的代码行数,找到对应行,然后在那行上找调用了哪些对象的方法或访问了哪些对象的实例属性,这些对象就是可能报空指针的引用了,然后可以单步调试,看停到这行代码上,看哪个对象是空,如果不方便本地调试,就可以加些输出语句,在报错语句前把可能为空的对象都打出来看哪个输出是null
2、ArrayIndexOutOfBoundsException,也是比较常见的异常,特别是初学数组时,这个异常也比较好排查解决的,就是数组越界了,要么访问的序号<0了,要么>=数组的长度了,看异常栈定位到报错的具体行数,然后就很容易解决这个错误了。