Android的工作室错误:未申报异常的Throwable;必须捕获或声明抛出 [英] Android studio error: unreported exception Throwable; must be caught or declares to be thrown

查看:172
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆