我收到了谷歌播放的错误。我想为用户停止崩溃,只是给他一个消息或祝酒。应用程序必须继续,如果这发生应用程序应跳过此或其他东西。只有部分设备会出现此错误。
android.database.sqlite.SQLiteDiskIOException: disk I/O error
at android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method)
at android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:2075)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1014)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:962)
at offline.sinhaladic.com.MainActivity.searcc(MainActivity.java:1366)
at offline.sinhaladic.com.MainActivity$7.afterTextChanged(MainActivity.java:972)
at android.widget.TextView.sendAfterTextChanged(TextView.java:7678)
at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:8080)
这是我的searcc函数MainActivity.java
:1366
public void searcc ()
{
String myPath=Environment.getDataDirectory()+"/data/"+getPackageName()+"/"+"databases/cz";
EditText et=(EditText) findViewById(R.id.editText1);
SQLiteDatabase cn = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
String cnql = "SELECT DISTINCT english FROM jgd INDEXED BY eng WHERE english LIKE '"+et.getText().toString()+"%' LIMIT 0,30";
Cursor cg=cn.rawQuery(cnql, null);
if(cg.moveToFirst())
{
do {
sugenstrArr.add(cg.getString(0));
} while (cg.moveToNext());
}
cg.close();
cn.close();
}
答案 0 :(得分:0)
使用try / catch块处理异常:
try {
//do my sql stuff
} catch (SQLiteDiskIOException exception) {//or general like SQLiteException (which is not great)
//handle your exception
}
所以每当你的sql东西要抛出任何异常时,你都会处理它(而不是传播给调用者方法)并且程序会正常流动(除非你在catch块中重新抛出异常)