android java 指针异常处理,Android程序员日常开发中异常总结

5e33b9361d39

CaptainAndroid.png

Java异常

平时开发中遇到的java异常很多,因为引起原因一目了然,当然也有不好解决的,比如一个简单的空指针异常你可能始终无法找到其为空的原因,甚至使用前还做了空判断。也有可能一个类型强制转换异常被报了出来可是你始终无法找到为什么出错的原因。偶先几率极低,只能catch的来了事。

NullPointerException空指针引用异常

ClassCastException 类型强制转换异常

IllegalArgumentException 传递非法参数异常

ArithmeticException 算术运算异常

ArrayStoreException 向数组中存放与声明类型不兼容对象异常

IndexOutOfBoundsException 下标越界异常

NegativeArraySizeException 创建一个大小为负数的数组错误异常

umberFormatException 数字格式异常

SecurityException 安全异常

10.UnsupportedOperationException 不支持的操作异常

CSDN上更多的java异常

Android自身特性异常

java.lang.NullPointerException

异常原因:另一种情况使用fragment时,fragment相关布局,必须给每个view设置id,否则通过activity获得fragment的实例时会出现以上异常

解决方法:为fragment布局的每个view设置ID

Android中引入第三方Jar包的方法(Java.lang.NoClassDefFoundError解决办法)

1、在工程下新建lib文件夹,将需要的第三方包拷贝进来。

2、将引用的第三方包,添加进工作的build path。选中jar包->Build Path

3、(关键的一步)将lib设为源文件夹。如果不设置,则程序编译可以通过,但运行的时候,会报:选中lib文件夹->source code

java.lang.NoClassDefFoundError

Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法)

Caused by: android.os.TransactionTooLargeException

导致原因是:Binder传输的数据太大

如果Binder的参数或返回值太大,不适合的事务缓冲区,然后调用将失败,并将被抛出TransactionTooLargeException。

解决方法:

不要将大量数据传入Binder

android.database.CursorWindowAllocationException:Cursor window allocation of 2048 kb failed

导致原因:主要原因是因为使用了SimpleCursorAdapter类,其中的Cursor参数需要我们手动关闭,否则就会出现以上异常。

解决方法:cursor.close()

Excessive JNI global references错误的解决方案 GREF暴增

导致原因:vm对jni层的reference有个数限制,过多很造成VM aborting。因此每次在GREF增加到2000以上的时候就直接aborting了

解决方法:及时回收或关闭引用

android.view.WindowManager$BadTokenException: Unable to add window -- token

导致原因:使用getApplicationContext()获得的Context,而必须使用Activity,因为只有一个Activity才能添加一个窗体。

解决方法:采用当前Activity的Context

android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file

导致原因:重复安装软件,导致Sqlite3打开数据库异常

解决方法:卸载相应软件,开关机,重新安装该软件,即可以解决相关异常。

java.util.ConcurrentModificationException(并发操作异常)

异常原因:ArrayList是非线程安全的,当同时在遍历和修改ArrayList时,就会出现该异常

解决方法:使用Vector替换ArrayList,Vector是线程安全的。Vector的缺点:大量数据操作时,由于线程安全,性能比ArrayList低

so库文件异常(JNI层异常)

异常原因:在Android应用层开发中,我们经常会使用so库文件。当so库文件发生异常时,我们只能在adb log中发现fatal libc这样的异常信息,仅此而已,并不能发现异常调用的逻辑关系, 这是我们就需要查看so 库异常Log信息。在Android手机的/data/tombstones 的路径下就包含了so库文件发生异常的Log信息,开发者可以查看该路径下载Log文件发现异常调用的逻辑关系。

谢谢大家阅读,如有帮助,来个喜欢或者关注吧!

本文作者:Anderson/Jerey_Jobs

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值