记录由公共方法调用的方法抛出的异常

时间:2013-08-31 14:15:44

标签: c# exception xml-documentation public-method

我是否,或者我不是,记录由公共方法调用的方法抛出的异常?根据我所读到的内容,我应该尝试记录这些例外,这是有道理的。与此同时,很快就会发现“不可能”记录所有可能抛出的异常。

此外,除非我误解了如何检查.NET方法抛出的异常,否则似乎Microsoft没有记录方法可能抛出的所有异常。 XmlReader.Create()列出了可抛出的四个异常:System.ArgumentNullExceptionSystem.Security.SecurityExceptionSystem.IO.FileNotFoundExceptionSystem.UriFormatException。我试图传入一个以“htp://”开头的uri,看看会发生什么异常。我得到了一个System.NotSupportedException,最终被System.Net.WebRequest.Create(..)抛出。

我是否正确,因为Microsoft没有记录可能引发的所有异常,或者我是否误解了某些内容。

在我自己的方法中,我会记录ArgumentOutOfRangeExceptionNotValidSyndicationException,但是我是否还要记录上面提到的XmlReader.Create()引发的四个例外情况?怎么样System.NotSuppoedExceptionSystem.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;
}

0 个答案:

没有答案