Dopo aver esaminato la maggior parte delle risposte qui, vorrei aggiungere un paio di pensieri.
Affidarsi ai commenti della documentazione XML e aspettarsi che altri facciano affidamento è una scelta sbagliata. La maggior parte del codice C # che ho incontrato non documenta i metodi in modo completo e coerente con i commenti della documentazione XML. E poi c'è il problema più grande che senza eccezioni controllate in C #, come potresti documentare tutte le eccezioni lanciate dal tuo metodo allo scopo del tuo utente API per sapere come gestirle tutte individualmente? Ricorda, conosci solo quelli che ti lanci con la parola chiave throw nella tua implementazione. Le API che stai utilizzando all'interno dell'implementazione del tuo metodo potrebbero anche generare eccezioni che non conosci perché potrebbero non essere documentate e non le stai gestendo nella tua implementazione, quindi esploderanno di fronte al chiamante del tuo metodo. In altre parole,
Andreas ha collegato un'intervista con Anders Hejlsberg nelle risposte qui sul motivo per cui il team di progettazione C # ha deciso di non verificare le eccezioni. La risposta definitiva alla domanda originale è nascosta in quell'intervista:
I programmatori proteggono il loro codice scrivendo finalmente try è ovunque, quindi torneranno indietro correttamente se si verifica un'eccezione, ma in realtà non sono interessati a gestire le eccezioni.
In altre parole, nessuno dovrebbe essere interessato a quale tipo di eccezione ci si può aspettare per una particolare API poiché le catturerete sempre tutte ovunque. E se vuoi davvero preoccuparti di eccezioni particolari, come gestirle dipende da te e non da qualcuno che definisce una firma del metodo con qualcosa come la parola chiave Java throws, forzando una particolare gestione delle eccezioni su un utente API.
-
Personalmente, sono combattuto qui. Sono d'accordo con Anders che l'aver controllato le eccezioni non risolve il problema senza aggiungere nuovi problemi diversi. Proprio come con i commenti della documentazione XML, raramente vedo il codice C # con tutto racchiuso in blocchi di prova finalmente. Mi sembra che questa sia davvero la tua unica opzione e qualcosa che sembra una buona pratica.