异常类问题处理汇总

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语句进行异常捕获。

你可能感兴趣的:(异常类问题处理汇总)