2009-11-11 12 views

risposta

24

No, Fintanto che il valore restituito indica ciò che si desidera che sia, è possibile tornare in qualsiasi momento. (assicurarsi di aver cancellato la memoria se allocato).

5

preferisco avere poche uscite punti nel mio codice, in modo da avrei scritto:

int rc = 1; 
try { 
    // some code 
} 
catch(...) { 
    rc = 0; 
} 
return rc; 

trovo più facile eseguire il debug e leggere il codice quando devo solo tenere traccia di un'istruzione return.

+5

personalmente lo trovo anche meglio, ma dipende anche dalle dimensioni della funzione, a volte è più pulito avere più punti di uscita (IMHO) che elaborare un sacco di codice se è stato raggiunto uno stato di errore. –

1

suggerirei che se non si conosce il tipo di eccezione generata dal codice, è possibile farlo. Ma in questo caso il client deve agire in base al valore restituito.

Ma sarebbe meglio creare un'eccezione definita dall'utente e lanciarla, in modo che il cliente possa venire a conoscenza di cosa è successo in realtà. Questo è l'uso effettivo dell'eccezione ed è raccomandato per lo scrittore di librerie.

+5

Se non sai quale eccezione viene lanciata, allora non hai problemi a prenderla. Se rilevi un'eccezione e non rilancia, allora è meglio che abbia risolto la causa originale dell'eccezione, che potrebbe essere esaurita, violazione dell'accesso, errore buss, stampante su fuoco o un numero qualsiasi di altre cose di cui non hai mai sentito parlare. Prendi solo quello che ti aspetti. Lascia che tutto il resto vada al chiamante. –

-1

è una buona pratica per farlo tornare alla fine della funzione, dopo il blocco try/catch.

+2

Dire qualcosa è una buona pratica non è molto utile senza una logica. –

Problemi correlati