1、Long Msg: java.lang.ArithmeticException: divide by zero(算术异常:运算除数/分母为0)
异常产生原因:
第一种:除数为0(分母为0);
解决方法:在不确定分母(变量初始化没有赋值)的情况下,我们 对其进行判断是否为0,在不为0的情况下执行代码;
第二种:数据超出限制,如:long类型数据转换为int类型,超出int所能存储的最大值
解决方法:使用long类型数据 或 判断在int最大值范围内,才去执行代码即可。
异常分析:大部分出现此异常是因为变量初始赋值时,没有给定具体的值,此时变量默认为0,如果在变量作为分母使
用除法运算时,没有判断是否为0,就会出现此异常情况。
2.java.lang.NullPointerException (空指针异常)
异常产生原因:平常遇见的大概几种:
(1)Object 为null,导致.equals操作,发生空指针异常
例如:String momoda = null;
nullStr.equals("name");//错误
"name" .equals(momoda);//正确
(2)findViewById()时,出现空指针异常
解决方法:检查布局文件是否正确,对应控件的id是否存在与布局文件之中,出现此情况大部分原因是因为布局文件错误,导致没有在布局文件中查找到对应的控件id.
(3)fragment.getActivity()时为空
解决方法:在使用fragemnt.getActivity()得到context前,一定要进行非空判断,或者进行try catch捕获异常。
原因:如果不进行非空判断,在系统内存不足、切换横竖屏、长时间在后台运行等情况下,activity被系统回收了,但是fragment不会随着activity的回收而回收,导致Fragment丢失对应的Activity,此时获取的Context是空的,会出现空指针异常。
(4)对象操作方法出现空指针
例如: mList.clear( ); 空指针异常指向此行代码
解决方法:可尝试对 mList进行非空判断,代码如下:
if (mList !=null){
mList.clear( );
}
(5)待续...
异常分析:此类异常大部分是由于书写代码时粗心所导致,注意布局文件和id的使用和获取,对于可能会出现空指针的位置,添加对应的判断,可大大减少此类异常的发生。
3.java.lang.IndexOutOfBoundsException(数组下标越界异常)
异常产生原因:当你使用不合法的索引访问数组时会报数组越界这种错误,数组attr的合法错误范围是[0, attr.length-1];当你访问这之外的索引时会报这个错。
解决方法:增加对数组size的判断,避免新出现此异常,如:
if( size > 0 && size <= attr.length-1){ 执行代码逻辑 }
4.java.lang.IllegalArgumentException: Comparison method violates its general contract!
异常产生原因:此异常表明向方法传递了一个不合法或不正确的参数。看网上资料说是 jdk 7的sort函数的实现变了,造成了这个问题,具体原因未知。
解决方法:尝试在出错代码前加入:
System.setProperty("java.util.Arrays.useLegacyMergeSort", "true");
5. java.lang.IllegalArgumentException: x + width must be <= bitmap.width()
异常产生原因:具体原因未知。
解决方法:将放置在xxhdpi 中的图片资源转移到hdpi目录下,异常消失;
(受适配思想影响,习惯性将图片资源放置在xxhdpi目录中)
6. java.lang.NumberFormatException
异常解析:数字格式异常。
试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常.
异常原因分析:
1)超出转换数值类型范围
2)转换值类型没有考虑值为空的状况
3)由于进制不同
解决方法:检查数据转换是否超出范围;检查转换值是否为空,检查进制;