Android的工作室错误:未申报异常的Throwable;必须捕获或声明抛出 [英] Android studio error: unreported exception Throwable; must be caught or declares to be thrown
本文介绍了Android的工作室错误:未申报异常的Throwable;必须捕获或声明抛出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
您好,我希望你能帮助我。
Hello I hope you can help me.
我的项目具有相同类型的5个错误。
My project has 5 errors of the same type.
这些方法哪里有错误:
public fresul BulkImportdbOperatori(SQLiteDatabase db, ArrayList<OperatoriXML> elencoOperatori) {
fresul Ret = new fresul(0, BuildConfig.FLAVOR);
Throwable th;
fresul Ret2 = new fresul(0, BuildConfig.FLAVOR);
db.beginTransaction();
try {
db.execSQL("DELETE FROM operatori");
SQLiteStatement insert = db.compileStatement("INSERT INTO operatori (codice, alfaoperatore, login, password) VALUES (?, ?, ?, ?)");
for (int i = 0; i < elencoOperatori.size(); i += VERSIONE_DB) {
insert.bindString(VERSIONE_DB, ((OperatoriXML) elencoOperatori.get(i)).getCodOp());
insert.bindString(2, ((OperatoriXML) elencoOperatori.get(i)).getAlfaOp());
insert.bindString(3, ((OperatoriXML) elencoOperatori.get(i)).getLoginOp());
insert.bindString(4, ((OperatoriXML) elencoOperatori.get(i)).getPwdOp());
insert.execute();
insert.clearBindings();
}
db.setTransactionSuccessful();
db.endTransaction();
return Ret2;
} catch (Exception e) {
String errMsg = e.getMessage() == null ? "bulkInsert failed" : e.getMessage();
Ret = new fresul(-1, errMsg);
Log.e("bulkInsert:", errMsg);
db.endTransaction();
return Ret;
} catch (Throwable th2) {
th = th2;
Ret2 = Ret;
db.endTransaction();
throw th;
}
}
这是第二个方法:
this is the second method:
public fresul BulkImportdbSale(SQLiteDatabase db, ArrayList<SaleXML> elencosale) {
fresul Ret = new fresul(0, BuildConfig.FLAVOR);
Throwable th;
fresul Ret2 = new fresul(0, BuildConfig.FLAVOR);
db.beginTransaction();
try {
db.execSQL("DELETE FROM sale");
SQLiteStatement insert = db.compileStatement("INSERT INTO sale (codice, alfasala, numerotavoli, deltatavoli) VALUES (?, ?, ?, ?)");
for (int i = 0; i < elencosale.size(); i += VERSIONE_DB) {
insert.bindString(VERSIONE_DB, ((SaleXML) elencosale.get(i)).getCodSala());
insert.bindString(2, ((SaleXML) elencosale.get(i)).getAlfaSala());
insert.bindString(3, Integer.toString(((SaleXML) elencosale.get(i)).getNumeroTavoli()));
insert.bindString(4, Integer.toString(((SaleXML) elencosale.get(i)).getDeltaTavoli()));
insert.execute();
insert.clearBindings();
}
db.setTransactionSuccessful();
db.endTransaction();
return Ret2;
} catch (Exception e) {
String errMsg = e.getMessage() == null ? "bulkInsert failed" : e.getMessage();
Ret = new fresul(-1, errMsg);
Log.e("bulkInsert:", errMsg);
db.endTransaction();
return Ret;
} catch (Throwable th2) {
th = th2;
Ret2 = Ret;
db.endTransaction();
throw th;
}
}
这是第三种方法
public fresul BulkImportdbArticoli(SQLiteDatabase db, ArrayList<RepartiXML> elencorep, ArrayList<VariantiXML> elencovar) {
fresul Ret = new fresul(0, BuildConfig.FLAVOR);
Throwable th;
fresul Ret2 = new fresul(0, BuildConfig.FLAVOR);
db.beginTransaction();
try {
int i;
String cv;
db.execSQL("DELETE FROM LinkVariantiArticoli");
db.execSQL("DELETE FROM variantiarticoli");
SQLiteStatement insertVariante = db.compileStatement("INSERT INTO variantiarticoli (codice, alfavariante, prezzovariante, variantepertutti) VALUES (?, ?, ?, ?)");
for (i = 0; i < elencovar.size(); i += VERSIONE_DB) {
cv = ((VariantiXML) elencovar.get(i)).getCodVariante();
String av = ((VariantiXML) elencovar.get(i)).getAlfaVariante();
double pv = ((VariantiXML) elencovar.get(i)).getPrezzoVariante();
boolean gv = ((VariantiXML) elencovar.get(i)).getVariantePerTutti();
insertVariante.bindString(VERSIONE_DB, cv);
insertVariante.bindString(2, av);
insertVariante.bindDouble(3, pv);
insertVariante.bindLong(4, (long) boolToInt(gv));
insertVariante.execute();
insertVariante.clearBindings();
}
db.execSQL("DELETE FROM reparti");
db.execSQL("DELETE FROM articoli");
SQLiteStatement insertRep = db.compileStatement("INSERT INTO reparti (codice, descrizione, posizione) VALUES (?, ?, ?)");
SQLiteStatement insertArt = db.compileStatement("INSERT INTO articoli (codice, descrizione, reparto, prezzo, iva, posizione) VALUES (?, ?, ?, ?, ?, ?)");
SQLiteStatement insertLinkVarArt = db.compileStatement("INSERT INTO LinkVariantiArticoli (codice_articolo, codice_variante) VALUES (?, ?)");
for (i = 0; i < elencorep.size(); i += VERSIONE_DB) {
insertRep.bindString(VERSIONE_DB, ((RepartiXML) elencorep.get(i)).getCodRep());
insertRep.bindString(2, ((RepartiXML) elencorep.get(i)).getAlfaRep());
insertRep.bindString(3, Integer.toString(((RepartiXML) elencorep.get(i)).getPosizione()));
insertRep.execute();
insertRep.clearBindings();
for (int y = 0; y < ((RepartiXML) elencorep.get(i)).getElencoArt().size(); y += VERSIONE_DB) {
ArticoliXML art = (ArticoliXML) ((RepartiXML) elencorep.get(i)).getElencoArt().get(y);
insertArt.bindString(VERSIONE_DB, art.getCodArt());
insertArt.bindString(2, art.getAlfaArt());
insertArt.bindString(3, ((RepartiXML) elencorep.get(i)).getCodRep());
insertArt.bindDouble(4, art.getPrezzoArt());
insertArt.bindDouble(5, art.getIvaArt());
insertArt.bindString(6, Integer.toString(art.getPosizione()));
insertArt.execute();
insertArt.clearBindings();
for (int K = 0; K < art.getElencoVarianti().size(); K += VERSIONE_DB) {
cv = (String) art.getElencoVarianti().get(K);
insertLinkVarArt.bindString(VERSIONE_DB, art.getCodArt());
insertLinkVarArt.bindString(2, cv);
insertLinkVarArt.execute();
insertLinkVarArt.clearBindings();
}
}
}
db.setTransactionSuccessful();
db.endTransaction();
return Ret2;
} catch (Exception e) {
String errMsg = e.getMessage() == null ? "bulkInsert failed" : e.getMessage();
Ret = new fresul(-1, errMsg);
Log.e("bulkInsert:", errMsg);
db.endTransaction();
return Ret;
} catch (Throwable th2) {
th = th2;
Ret2 = Ret;
db.endTransaction();
throw th;
}
}
这是第四种方法
public fresul BulkImportdbCDP(SQLiteDatabase db, ArrayList<InfoCdpXML> elencoCDP) {
fresul Ret = new fresul(0, BuildConfig.FLAVOR);
Throwable th;
fresul Ret2 = new fresul(0, BuildConfig.FLAVOR);
db.beginTransaction();
try {
db.execSQL("DELETE FROM CentriDiProduzione");
SQLiteStatement insert = db.compileStatement("INSERT INTO CentriDiProduzione (codice, alfacdp) VALUES (?, ?)");
for (int i = 0; i < elencoCDP.size(); i += VERSIONE_DB) {
insert.bindString(VERSIONE_DB, ((InfoCdpXML) elencoCDP.get(i)).getCodCDP());
insert.bindString(2, ((InfoCdpXML) elencoCDP.get(i)).getAlfaCDP());
insert.execute();
insert.clearBindings();
}
db.setTransactionSuccessful();
db.endTransaction();
return Ret2;
} catch (Exception e) {
String errMsg = e.getMessage() == null ? "bulkInsert failed" : e.getMessage();
Ret = new fresul(-1, errMsg);
Log.e("bulkInsert:", errMsg);
db.endTransaction();
return Ret;
} catch (Throwable th2) {
th = th2;
Ret2 = Ret;
db.endTransaction();
throw th;
}
}
和这是最后的
public fresul BulkImportdbMsgForCDP(SQLiteDatabase db, ArrayList<MsgForCdpXML> elencoMSG) {
fresul Ret = new fresul(0, BuildConfig.FLAVOR);
Throwable th;
fresul Ret2 = new fresul(0, BuildConfig.FLAVOR);
db.beginTransaction();
try {
db.execSQL("DELETE FROM MsgForCDP");
SQLiteStatement insert = db.compileStatement("INSERT INTO MsgForCDP (codice, testo, cdp) VALUES (?, ?, ?)");
for (int i = 0; i < elencoMSG.size(); i += VERSIONE_DB) {
insert.bindString(VERSIONE_DB, ((MsgForCdpXML) elencoMSG.get(i)).getCodMSG());
insert.bindString(2, ((MsgForCdpXML) elencoMSG.get(i)).getTestoMSG());
insert.bindString(3, ((MsgForCdpXML) elencoMSG.get(i)).getCodCDP());
insert.execute();
insert.clearBindings();
}
db.setTransactionSuccessful();
db.endTransaction();
return Ret2;
} catch (Exception e) {
String errMsg = e.getMessage() == null ? "bulkInsert failed" : e.getMessage();
Ret = new fresul(-1, errMsg);
Log.e("bulkInsert:", errMsg);
db.endTransaction();
return Ret;
} catch (Throwable th2) {
th = th2;
Ret2 = Ret;
db.endTransaction();
throw th;
}
}
你能帮助我理解这是怎么回事?
Could you help me understand what's going on?
推荐答案
在你的第二个抓
语句,你再扔可运行:
in your second catch
statement,you throw runnable again:
catch (Throwable th2) {
th = th2;
Ret2 = Ret;
db.endTransaction();
throw th;
}
这就是为什么存在这样的错误,如果你想重新抛出该异常,应声明你的方法是这样的:
that's why such an error exists,if you want to rethrow this exception,you should declare your method like this:
public fresul BulkImportdbOperatori(SQLiteDatabase db, ArrayList<OperatoriXML> elencoOperatori) throws Throwable
这篇关于Android的工作室错误:未申报异常的Throwable;必须捕获或声明抛出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文