Penso che tu sia sulla buona strada. Né lanciare, catturare, né documentare tutte le eccezioni potenzialmente gettabili ha molto senso. Vi sono momenti in cui la rigorosità del prodotto richiede un livello più elevato di impiego e documentazione delle eccezioni (ad esempio alcuni aspetti critici per la sicurezza di un sistema).
La strategia di essere più difensiva, usando i concetti del contratto per identificare le precondizioni (e le postcondizioni) in particolare sui chiamanti a valle (ad esempio qualsiasi cosa che assomigli a un membro pubblico o protetto) sarà spesso più efficace e più flessibile. Questo vale non solo per l'implementazione, ma per la documentazione. Se gli sviluppatori sanno cosa ci si aspetta, hanno maggiori probabilità di seguire le regole e meno probabilità di essere confusi o di abusare del codice che hai scritto.
Alcune delle cose comuni che dovrebbero essere documentate includono il caso di parametri null. Spesso c'è una conseguenza per il loro uso che porta il risultato a qualcosa che normalmente non ci si aspetterebbe, ma che è consentito e utilizzato per una varietà di ragioni, a volte per flessibilità. Come consumatore di un membro che ha parametri che consentono valori nulli o altri valori speciali, non razionali (come tempo negativo o quantità negative), mi aspetto di vederli identificati e spiegati.
Per i parametri non nulli, in quanto consumatore di un membro pubblico o protetto, voglio sapere che null non è consentito. Voglio sapere qual è l'intervallo di valori valido in un determinato contesto. Voglio conoscere le conseguenze dell'utilizzo di valori che non rientrano nell'intervallo normale, ma che sono comunque validi in un diverso contesto di chiamata (ad esempio, il valore del tipo è generalmente valido per qualsiasi operazione, ma non qui - come un parametro booleano che non non aspettarsi false come valore valido.
Per quanto riguarda la piattaforma, o interfacce altrimenti ben note, non credo che si debba fare il possibile per documentarlo. Tuttavia, poiché hai la possibilità come sviluppatore di variare l'implementazione da qualsiasi orientamento della piattaforma, prendi nota di come ne consegue che l'orientamento può essere utile.
Specifico per IDisposable, spesso le implementazioni di questa interfaccia offrono un metodo alternativo che è preferito rispetto al processo di smaltimento esplicito. In questi casi, evidenziare il metodo preferito e notare che lo smaltimento esplicito non è preferito.