Sposób próbki z dokumentacją XML:Jak dokumentować wyjątki metod asynchronicznych?
// 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)
zgłasza wyjątek, zgodnie z oczekiwaniami. Oto sposób asynchroniczny:
public async Task WriteAsync(string text)
{
if (text == null)
throw new ArgumentNullException("text", "Text must not be null.");
// async stuff...
}
WriteAsync(null)
, nie rzuci wyjątek aż oczekiwany. Czy mimo to należy podać ArgumentNullException
w tagu exception
? Myślę, że byłoby to zrobić konsument uważa, że powołanie WriteAsync
może rzucić ArgumentNullException
i napisać coś takiego:
Task t;
try
{
t = foo.WriteAsync(text);
}
catch (ArgumentNullException)
{
// handling stuff.
}
Jaka jest najlepsza praktyka dokumentowania wyjątków w zakresie metod asynchronicznych?
+1 I dłuższe wyjaśnienie znajduje się na blogu Jona Skeeta: http://msmvps.com/blogs/jon_skeet/archive/2010/11/01/control-flow-redux-exceptions-in-asynchronous-code.aspx –
+1, robię to. :) Ale co, jeśli istnieją wyjątki, które można rzucać po oczekiwaniu, wyjątki, które nie są związane z walidacją argumentów? Czy należy je określić w dokumentacji xml? –
Nie odniósłeś się do tego punktu; np. jak radzić sobie z wyjątkami ... – MoonKnight