异常类问题处理汇总

1.arrayindexoutofboundsexception:length=0,index=0

原因:该问题的产生是因为在数组长度为0时,进行了0点位置的取值,导致数组越界的问题。

处理方法:根据log查看出现问题所打印出来的行数,然后根据行数值判断取值语句。针对该类问题,最直接的解决办法是判断数组是否大于0,在进行求取。例如:

public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {

         if(grantResults.length > 0) {    //修改所添加的语句

                if (requestCode == 1 && grantResults[0] != PackageManager.PERMISSION_GRANTED) {

                            finish();

                  }

          }

2.android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application


原因:在未创建对象时,就开始show

处理方法:常为AlertDialog.show的时候所出现的异常。在show的时候必须要用context或者Activity.this,而不是用getApplication(),因为只有一个Activity才能添加实例;或者添加try,catch异常,使其能够跑出异常。

3.Android SQLiteDatabaseLockedException: database is locked

原因:产生该问题的原因是因为数据库同时在被多个线程在操作,导致数据混乱。

解决方法:(1)加入同步锁,但是同步锁可能会产生ANR问题,导致程序长时间无响应;

(2)db.isOpen()查看数据库是否打开及db.isDbLockedByOtherThreads()判断是否在被其他程序上锁,如果数据库处于关闭状态及未被锁定状态,即可。

此外,若不是很放心,可以再在外层加入try...catch语句进行异常捕获。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容