Ho una classe con numero di metodi e voglio avere un gestore di eccezioni per tutti. Ci sono così tanti di questi metodi e hanno parametri diversi, che sarebbe brutto scrivere try/catch per ognuno di essi.Un gestore di eccezioni per tutte le eccezioni di una classe
Forse conosci un modo in cui posso farlo con un gestore di eccezioni di una classe, che gestirà tutte.
UPDATE:
Molti di voi mi chiedono perché. Il motivo è che sto chiamando un'origine dati con vari metodi. quindi la mia classe ha funzioni getData1, gedData2, getData3, getData4, ...., getDataN. Il problema è che non c'è modo di verificare se la connessione è ancora aperta e la creazione di una nuova connessione è molto costosa. Quindi sto cercando di riutilizzare la connessione e se la connessione alla prossima chiamata non è andata a buon fine, lo prenderei e riconnetterò e riproverò. Ecco perché ho bisogno di questo try/catch all block.
di fare questo per tutte le funzioni:
try{
datasource.getData()
}
catch(ConnectionException)
{
datasource.Connect();
datasource.getData()
}
Grazie
So che è una vecchia questione, ma volevo dire che, anche se io per lo più d'accordo con le risposte di seguito che sono state presentate il giorno in cui è stata posta la domanda, ci sono momenti in cui questa capacità sarebbe molto utile. ne ho descritto uno sopra e ho trovato questa domanda perché ho un altro scenario. Anche se la risposta di Jack Allan non funziona per il mio scenario, l'ho svalutato perché è utile in altre situazioni ed è molto intelligente, IMHO. Detto questo, prima di usare la "soluzione" di Jack assicurati che non ci sia un altro modo per strutturare il tuo codice per evitare del tutto la necessità. –
Non esiste un meccanismo del genere - né dovrebbe esserci, IMHO. Non è coerente con il modo in cui viene trasmesso il flusso di controllo. Non importa che quello che devi fare è "brutto". Non importa che la soluzione che hai fatto, richiede la scrittura di codice aggiuntivo. Ciò che conta è che tu sia in grado di scrivere software che sia facile da capire e da mantenere in seguito, quando tu (o qualcun altro) hai dimenticato i dettagli originali. Se un metodo deve fare qualcosa quando si verifica un'eccezione, allora DEVE essere qualcosa nel metodo, che dice cosa fare. Questa è una buona cosa. – ToolmakerSteve
BTW, ho sviato la domanda, perché penso che questa sia una GRANDE domanda. È legittimo e utile per gli altri, VUOLE fare questo. Capire PERCHE 'non c'è un modo per farlo e capire cosa dovrebbe essere fatto (cosa che hai già fatto, nella tua domanda, anche se non ti è piaciuto il risultato), sarà utile per gli altri. – ToolmakerSteve