Lo stesso comportamento per Boolean ed eccezione

0

Il seguente codice utilizza una preferenza booleana active : nello stato active , esegue un'operazione che potrebbe generare un'eccezione. In questa eccezione, ricade nello stato non- active .

let active = somePreference;
function getValue(parameter) {
    try {
        if ( active ) {
            return valueStore.query(parameter);
        } else {
            throw {name: 'MyException'};
        }
    } catch (e) {
        return getRandomValue();
    }
}

Questa funzione può essere chiamata diverse volte al secondo. valueStore restituisce un valore positivo in caso di successo e genera un'eccezione in caso di errore. (come consigliato f.ex. da Eccezione rispetto al codice di ritorno in pattern DAO ).

Un'alternativa sarebbe un blocco if..else esterno per evitare la seconda eccezione, ma con la duplicazione del codice.

Come scrivere codice pulito con un'eccezione e una condizione che attivano entrambe la stessa azione? In JavaScript, cioè.

Related:

posta serv-inc 02.05.2016 - 08:31
fonte

1 risposta

2

Potresti rovesciare le cose in questo modo:

function getValue(parameter) {
    if (active) {
        try {
            return valueStore.query(parameter)
        } catch (e) {
            // quietly fall back to non-active behavior
        }
    }

    return getRandomValue();
}

Ora non ci sono duplicazioni o eccezioni locali. Se la logica di fallback ( getRandomValue() ) fallisce, ottieni sempre un'eccezione.

    
risposta data 02.05.2016 - 17:09
fonte

Leggi altre domande sui tag