常见异常备忘录

来源:互联网 发布:梦幻西游网络乾坤 编辑:程序博客网 时间:2024/05/18 18:55

异常:

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,无法保证。


0 0
原创粉丝点击