È utile in quanto è possibile aggiungere ulteriori informazioni che la classe di eccezioni di base non contiene.
Quindi puoi creare una classe NetworkException e questo conterrebbe informazioni sul codice di errore del socket e / o l'indirizzo di connessione di destinazione o qualsiasi altra cosa ti sia piaciuta. I chiamanti possono prendere questo e presentare informazioni migliori per la diagnosi dell'errore.
Tuttavia ora inizi ad entrare in un problema di analisi - perché preoccuparti di scrivere tutte queste informazioni e una nuova classe di eccezioni quando è probabile, il chiamante che cattura la tua eccezione scriverà semplicemente tutte le informazioni personalizzate in una stringa e la scaricherà nel registro file o visualizzalo come "informazione dettagliata" per l'utente - potresti anche scriverlo al membro della stringa delle classi di base e averlo fatto, salvando tutti un sacco di problemi.
Tuttavia, se si dispone di una classe di eccezioni personalizzata, il client può catturare solo quelli che gli interessa e consentire ad altri di continuare lo stack di chiamate per qualcun altro da gestire, ad esempio il chiamante potrebbe intercettare NetworkException quando l'utente fa clic su Connetti , ma lascia che OutOfMemoryException continui e ... beh, di solito si blocca il client.
Quindi è un po 'una di quelle aree in cui devi pensare seriamente al design, e spesso nessuna risposta che ti viene in mente è quella "giusta", nessuna è altrettanto buona. (ad esempio, ho uno strumento scritto in C #, e ci sono molte e molte classi di eccezioni di Microsoft che potrei prendere ... anche se prendo alcune classi di eccezioni speciali per determinate circostanze, tendo comunque a prenderle tutte e stampare il messaggio della classe base in ogni caso (o peggio - il messaggio di sorpresa, non andare lì) .Questo è uno strumento di amministrazione in modo da scrivere ogni messaggio di eccezione è ciò di cui ho bisogno e ogni eccezione di Microsoft contiene un messaggio con i dettagli voglio loggarmi quindi non mi interessa davvero la classe di eccezioni!
quindi dipende da te, anche se sconsiglio di creare un'enorme gerarchia di ereditarietà di ogni possibile errore, in questo modo si trovano molti problemi di manutenzione e documentazione.