我是否,或者我不是,记录由公共方法调用的方法抛出的异常?根据我所读到的内容,我应该尝试记录这些例外,这是有道理的。与此同时,很快就会发现“不可能”记录所有可能抛出的异常。
此外,除非我误解了如何检查.NET方法抛出的异常,否则似乎Microsoft没有记录方法可能抛出的所有异常。
XmlReader.Create()
列出了可抛出的四个异常:System.ArgumentNullException
,System.Security.SecurityException
,System.IO.FileNotFoundException
和System.UriFormatException
。我试图传入一个以“htp://”开头的uri,看看会发生什么异常。我得到了一个System.NotSupportedException
,最终被System.Net.WebRequest.Create(..)
抛出。
我是否正确,因为Microsoft没有记录可能引发的所有异常,或者我是否误解了某些内容。
在我自己的方法中,我会记录ArgumentOutOfRangeException
和NotValidSyndicationException
,但是我是否还要记录上面提到的XmlReader.Create()
引发的四个例外情况?怎么样System.NotSuppoedException
或System.Net.WebException
(当指定的uri没有端点时抛出),这是另一个未记录的例外,但必须“通过我的试错找到”。
public IEnumerable<SyndicationItem> GetItems(int count)
{
if (count <= 0)
{
throw new ArgumentOutOfRangeException("count", "Count must be positive.");
}
IEnumerable<SyndicationItem> items;
using (var rssReader = XmlReader.Create(this.uri))
{
var feedFormatter = new Rss20FeedFormatter();
if (feedFormatter.CanRead(rssReader))
{
feedFormatter.ReadFrom(rssReader);
items = feedFormatter.Feed.Items.Take(count);
}
else
{
throw new NotValidSyndicationException("The uri does not point to a valid syndication.");
}
}
return items;
}