Mentre progettavo la mia prima libreria C ++ "seria", mi chiedo:
È un buon stile derivare delle eccezioni da std::exception
e sono prole?!
Anche dopo aver letto
- Progettazione di classi di eccezioni
- Che cos'è un "buon numero" di eccezioni da implementare per la mia libreria?
Non sono ancora sicuro. Perché, oltre alla pratica comune (ma forse non buona), suppongo, come utente di una libreria, che una funzione di libreria possa generare std::exception
s solo quando le funzioni di libreria standard non sono riuscite nell'implementazione della libreria e non può fare nulla esso. Ma ancora, quando scrivo il codice dell'applicazione, per me è molto conveniente, e anche IMHO è buono a lanciare un std::runtime_error
. Anche i miei utenti possono contare sull'interfaccia minima definita, come what()
o codici.
E ad esempio, il mio utente fornisce argomenti difettosi, cosa sarebbe più conveniente, che lanciare un std::invalid_argument
, non è vero?
Quindi, combinato con l'uso comune di std :: exception, vedo in altri codice:
Perché non andare ancora oltre e derivare dalla tua classe di eccezione personalizzata (ad es. Lib_foo_exception) e anche da std::exception
.
Pensieri?