Reraising l'eccezione esplicitamente o passandola sopra?

3

Questa domanda riguarda lo stile di codifica.

Dire che ho una funzione, f . f dipende da una condizione C . Chiama un'altra funzione g come subroutine. g dipende anche dalla condizione C . Se trova che la condizione C non è soddisfatta, solleva un'eccezione. Ora, nella funzione f , dovremmo scrivere:

try:
    result = g()
except TheSpecificExcpetionGRaises:
    raise

o semplicemente semplice

g()

Entrambi passano l'eccezione, ma il metodo uno inserisce il traceback nell'ambito della funzione f e il metodo due inserisce il traceback nello scope della funzione g .

Nota: la condizione di C non essere soddisfatta non implica l'uso improprio della funzione f . Oppure, in termini CS, la condizione C non fa parte delle specifiche del problema, piuttosto puntiamo quando la condizione C è falsa.

Non so perché ho scritto in corsivo tutto e usato termini matematici.

    
posta noɥʇʎԀʎzɐɹƆ 12.07.2016 - 20:06
fonte

1 risposta

2

Questo vale per qualsiasi lingua. Se non hai intenzione di fare nulla con l'eccezione, o come risultato dell'eccezione che viene catturata, non preoccuparti di prenderla. Ti fa risparmiare alcune righe di codice e indentazione.

Vedere un blocco except potrebbe dire ad altri programmatori, che sono occupati e non stanno leggendo ogni riga di codice, "Oh bene. CrazyPython sta gestendo questa eccezione" e poi non eseguono il loro due diligence altrove.

Se non riesci a gestire l'eccezione, lascia che salti alle stelle. Qualcun altro deve gestirlo, perché il tuo codice non può, e va bene.

    
risposta data 13.07.2016 - 19:18
fonte

Leggi altre domande sui tag