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

                             "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)由于进制不同

      解决方法:检查数据转换是否超出范围;检查转换值是否为空,检查进制;

 

      

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值