2016-01-04 30 views
-3

你好,我希望你能幫助我。Android工作室錯誤:未報告的異常可丟;必須被捕或宣佈被拋出

我的項目有5個相同類型的錯誤。

這些方法在有錯誤:

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; 
     } 
    } 

這是第二個方法:

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; 
    } 
} 

你能幫我明白這是怎麼回事?

在你的第二個 catch聲明

回答

1

,你再運行的拋出:

catch (Throwable th2) { 
    th = th2; 
    Ret2 = Ret; 
    db.endTransaction(); 
    throw th; 
} 

這就是爲什麼存在這樣的錯誤,如果你想重新拋出該異常,應聲明你這樣的方法:

public fresul BulkImportdbOperatori(SQLiteDatabase db, ArrayList<OperatoriXML> elencoOperatori) throws Throwable 
相關問題