Ciao
Puoi fare in modo che la funzione richiami sè stessa, però devi fare qualche accorgimento per evitare che si esegua un ciclo infinito.
In alternativa, puoi fare un semplice goto (anche se solitamente ne viene sconsigliato l'utilizzo per la leggibilità del codice)
Ad esempio, potresti fare così:
Costruttore() {
AggiornaDati();
}
//Questa funzione serve per non doverti riscrivere tutte le volte il parametro
//(nel caso ti scordi) o ti dà fastidio
void AggiornaDati() {
AggiornaDati(1);
}
void AggiornaDati(int tentativi) {
try {
//Prova a caricare
} catch (SQLiteException ex) {
if(tentativi > 0) {
CercaDB();
//Richiama la funzione stessa, ma col parametro diminuito di 1
//in questo modo la prossima volta non farà un altro tentativo
AggiornaDati(tentativi - 1);
}
}
}
Oppure così:
Costruttore() {
AggiornaDati();
}
void AggiornaDati() {
//Il numero di tentativi ancora da svolgere
int tentativi = 1;
start:
try {
//Prova a caricare
} catch (SQLiteException ex) {
//Se sono rimasti dei tentativi, li rifà
if(tentativi > 0) {
CercaDB();
//Decrementa il numero di tentativi rimasti
tentativi--;
//Riesegue la funzione
goto start;
}
}
}
Il codice l'ho scritto al volo, dovrebbe funzionare ma se ci sono problemi dimmelo
Luca