Android常见异常

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");//错误

扫描二维码关注公众号,回复: 2818288 查看本文章

                             "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){ 执行代码逻辑 }

猜你喜欢

转载自blog.csdn.net/xyl826/article/details/81743622