常见异常
java.lang.NullPointerException:空指针异常
简单地说就是调用了未经初始化的对象或者是不存在的对象,有时可以直接点击定位到空指针对应的行。java.lang.ClassNotFoundException:指定的类不存在
如果是activity考虑是否在清单文件中注册,是否把类写在了另外一个项目,添加的依赖库是否正确等;java.lang.IndexOutOfBo undsException:数组下标越界
|--ArrayIndexOutOfBoundsException
|--StringIndexOutOfBoundsException
现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常;java.lang.IllegalArgumentException:方法的参数错误
比如g.setColor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异常,我们要做的, 就是赶紧去检查一下方法调用中的参数传递是不是出现了错误;java.lang.IllegalAccessException:没有访问权限
当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了Package的情况下要注意这个异常;java.lang.OutOfMemoryError:内存不足错误
当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误;java.lang.StackOverflowError:堆栈溢出错误
当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误;java.lang.ClassCastException:类型转换异常
当把一个对象归为某个类,但实际上此对象并不是由这个类创建的,也不是其子类创建的,则会引起异常。假设有类A和B(A不是B的父类或子类),O是A的实例,那么当强制将O构造为类B的实例时抛出该异常。java.lang.IllegalAccessException:违法的访问异常
当应用试图通过反射方式创建某个类的实例、访问该类属性、调用该类方法,而当时又无法访问类的、属性的、方法的或构造方法的定义时抛出该异常;SQLException:操作数据库异常类。
在Java应用程序中,所有数据库操作发生异常时,都会触发这一个类。所有此时Java应用程序本身的提示信息往往过于笼统,只是说与数据库交互出现错误,没有多大的参考价值。此时反而是数据库的提示信息更加有使用价值。如下面的异常信息。这种异常一般根据后面的提示信息都能找到,如下面就是没有data这样的列名。ClassCastException:数据类型转换异常。在Java应用程序中,有时候需要对数据类型进行转换。这个转换包括显示的转换与隐式的转换。不过无论怎么转换,都必须要符合一个前提的条件,即数据类型的兼容性。如果在数据转换的过程中,违反了这个原则,那么就会触发数据类型转换异常。
FileNotFoundException:文件没有找到异常是否添加权限,SD卡是否在可挂载状态;
ConcurrentModificationException:并发修改异常
常见于增强for循环中,删除集合中的数据。SecurityException: 安全异常
一般是由权限问题引起的,比如读写短信以及访问网络等都需要在清单文件中添加访问权限,如果没有添加,有些则会在日志中打印出异常信息,有些则不会有任何提示。
非常见异常
NumberFormatException:数据格式化异常
在数据类型转换过程中,如果是字符型转换为数字型过程中出现的问题,对于这个异常在Java程序中采用了一个独立的异常,即NumberFormatException.如现在讲字符型的数据“123456”转换为数值型数据时,是允许的。但是如果字符型数据中包含了非数字型的字符,如123#56,此时转换为数值型时就会出现异常。系统就会捕捉到这个异常,并进行处理。在json解析成对象的时候常见,如本来是float类型的数据,赋值给int类型就会出现上述异常;NoClassDefFoundError: 没有找到定义的类错误
找不到的类,一般是由于添加的jar包有问题,在eclipse可以尝试点击fix properties,或者更换依赖的jar包。java.lang.ArithmeticException:数学运算异常
比如程序中出现了除以零这样的运算就会出这样的异常;