常见异常备忘录

异常:

1. new File(String path)

这个path不能为空,否则空指针


2. ListView数据更新导致的数组越界异常ArrayOutOfBound

ListView通常会对应一个数据集,一般用List保存。

ListView刷新时,首先调用Adapter的getCount(), getCount通常返回数据集中数据的个数。

假设getCount()返回n,

则接着调用 n 次 Adapter的getView()方法。

而getView通常会访问数据集指定位置的数据。


当数据集不变时,没有问题。

一旦数据集发生变化,确切的说,数据减少时,

例如减少1个,那么访问数据集List第n-1位置是,就发生数据越界。


发生异常的场景:

支持删除数据的ListView。


解决方案:

1. getView中访问数据前,检查是否数组越界。

或者2. 删除数据时,确保界面没有同时刷新。这个在界面设计上有点复杂。


3. 遍历集合同时修改集合导致的ConcurrentModificationException



错误的代码如下,以map为例。这里remove或者put都会导致该异常。

比较坑的是,三星手机会出现该异常,但是会被系统吃掉,代码直接终止,应用进程不会终止,界面不会有任何提示。

小米等不会报该异常,一切正常。



正确的代码如下:





非异常

1. dialog构造函数的cancellistener的监听器可以为null。

默认行为就是dismiss。

这个没有官方文件规定,

通过看源代码发现,并已实践验证。


风险:后续版本的android源码会不会crash,无法保证。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值