Metodo campione con documentazione XML:Come documentare le eccezioni dei metodi asincroni?
// summary and param tags are here when you're not looking.
/// <exception cref="ArgumentNullException>
/// <paramref name="text" /> is null.
/// </exception>
public void Write(string text)
{
if (text == null)
throw new ArgumentNullException("text", "Text must not be null.");
// sync stuff...
}
Write(null)
genera un'eccezione come previsto. Ecco un metodo asincrono:
public async Task WriteAsync(string text)
{
if (text == null)
throw new ArgumentNullException("text", "Text must not be null.");
// async stuff...
}
WriteAsync(null)
, non sarà un'eccezione fino atteso. Devo specificare loin un tag exception
? Penso che sarebbe rendere il consumatore pensa che chiamare WriteAsync
potrebbe generare un ArgumentNullException
e scrivere qualcosa del genere:
Task t;
try
{
t = foo.WriteAsync(text);
}
catch (ArgumentNullException)
{
// handling stuff.
}
Qual è la migliore pratica per documentare eccezioni a metodi asincroni?
+1 E una spiegazione più lunga è nel blog di Jon Skeet: http://msmvps.com/blogs/jon_skeet/archive/2010/11/01/control-flow-redux-exceptions-in-asynchronous-code.aspx –
+1, lo faccio. :) Ma cosa succede se ci sono eccezioni che possono essere lanciate dopo l'attesa, eccezioni che non sono correlate alle convalide degli argomenti? Dovrei specificarli nella documentazione xml? –
Non hai affrontato il punto in questione; Ad esempio, come gestire le eccezioni ... – MoonKnight