NO.01  java.lang.NullPointerException

异常的解释是“空指针异常”,当应用试图在要求使用对象的地方使用了null时,抛出该异常。譬如:调用null对象的实例方法、访问null对象的属性、计算null对象的长度、使用throw语句抛出null等等。

遇到的例子(jsp编程中经常出现):

if (request.getParameter(“username”).equals(“xxx”))

解决这个问题的方法是在使用前进行判空比较:

if (request.getParameter(“username”)!=null) {

    if (request.getParameter(“username”).equals(“xxx”))

    {…}

}

 

 

NO.02  java.lang.ClassNotFoundException

异常的解释是“指定的类不存在”,这里主要考虑一下类的名称和路径是否正确即可。

遇到的例子:

java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter

xml是配置有问题,找不到到类!

filter要找的类没有找到,仔细检查web.xml文件,应该是配置错了。

 

 

NO.03  java.lang.ArithmeticException

异常的解释是 “数学运算异常”,比如程序中出现(1/0)除以零的运算就会出这样的异常,对这种异常,好好检查一下自己程序中涉及到数学运算的地方,公式是不是有不妥了。

 

 

NO.04  java.lang.ArrayIndexOutOfBoundsException

异常的解释是“数组下标越界”,现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。

 

 

NO.05  java.lang.IllegalArgumentException

异常的解释是“方法的参数错误”,一般是方法调用中的参数传递出现了错误。比如音量调节方法中的音量参数如果写成负数就会出现这个异常。

遇到的例子:

java.lang.IllegalArgumentException

spring中出现的异常,由于版本问题导致无法运行!

右击Project--->Properties--->Project Facets:修改JDK版本,需要将1.8降为1.7版本。

 

 

NO.06  java.lang.IllegalAccessException

异常的解释是“没有访问权限”,当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了Package的情况下要注意这个异常。

 

 

NO.07  java.lang.IllegalStateException

异常的解释是“违法的状态异常”,当在Java环境和应用尚未处于某个方法的合法调用状态,而调用了该方法时,抛出该异常

 

 

NO.08  java.lang.IllegalThreadStateException

异常的解释是“违法的线程状态异常”,当线程尚未处于某个方法的合法调用状态,而调用了该方法时,抛出异常。

 

 

NO.09  java.lang.InterruptedException

异常的解释是“被中止异常”,当某个线程处于长时间的等待、休眠或其他暂停状态,而此时其他的线程通过Thread的interrupt方法终止该线程时抛出该异常。

 

 

NO.10  java.lang.InstantiationException

异常的解释是“实例化异常”,当试图通过newInstance()方法创建某个类的实例,而该类是一个抽象类或接口时,抛出该异常。

 

 

NO.11  java.lang.IndexOutOfBoundsException

异常的解释是“索引越界异常”,当访问某个序列的索引值小于0或大于等于序列大小时,抛出该异常。

 

 

NO.12  java.lang.StringIndexOutOfBoundsException

异常的解释是“字符串索引越界异常”,当使用索引值访问某个字符串中的字符,而该索引值小于0或大于等于序列大小时,抛出该异常。

 

 

NO.13  java.lang.NoSuchFieldException

异常的解释是“属性不存在异常”,当访问某个类的不存在的属性时抛出该异常。

 

 

NO.14  java.lang.NoSuchMethodException

异常的解释是“方法不存在异常”,当访问某个类的不存在的方法时抛出该异常。

 

 

NO.15  java.lang.NumberFormatException

异常的解释是“数字格式异常”,当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常。

 

 

NO.16  java.lang.TypeNotPresentException

异常的解释是“类型不存在异常”,当应用试图以某个类型名称的字符串表达方式访问该类型,但是根据给定的名称又找不到该类型是抛出该异常。

该异常与(NO.02)ClassNotFoundException的区别在于:

TypeNotPresentException异常是unchecked(不被检查)异常,

而ClassNotFoundException是checked(被检查)异常。

 

 

NO.17  java.lang.reflect.InvocationTargetException

InvocationTargetException异常由Method.invoke(obj, args...)方法抛出。当被调用的方法的内部抛出了异常而没有被捕获时,将由此异常接收!!!

问题分析及解决方法:

由于采用反射机制,我们捕捉到的异常是java.lang.reflect.InvocationTargetException,但这个异常的message为null,而这个异常是我们的方法所抛出的异常引起的(即异常引起的异常)。

故要获取方法真正的异常,需要通过e.getTargetException()取出来,或者用e.getCause()来捕捉异常。

附加信息:

e.getMessage();    只会获得具体的异常名称. 比如说NullPoint 空指针,就告诉你说是空指针。

e.getCause().getMessage();    这样的话就会获取到具体的错误原因。