捕获异常,验证输入或两者兼而有之?

Pet*_*ete 5 .net c# validation exception-handling

我正在努力获取RSS feed这样:

SyndicationFeed rss = SyndicationFeed.Load(XmlReader.Create(textBox1.Text));
Run Code Online (Sandbox Code Playgroud)

XmlReader.Create() 在这种情况下,最多可以抛出4个与参数为null,404错误等相关的异常.

我应该在调用该行之前尝试验证Uri(确保它不是空的,404,正确的doctype等),还是应该只处理异常?我知道我已多次阅读过,应该将异常用于真正的特殊情况,我同意这似乎不符合这个先决条件,但似乎更容易处理异常.

Dyp*_*ppl 4

Text复选框的属性永远不会为空,因此您可以跳过该属性。手动检查所有简单且与流程无关的情况,例如字符串为空和 Url 正确,并将更多模糊的 XML 特定内容留给方法内部的验证Create。所以答案是将两者结合起来。

另外,让我再次参考Eric Lippert 关于异常的博客文章。在您的情况下,令人烦恼的异常和外源异常都可能发生,因此您应该捕获它们。但要确保不会发生愚蠢的事情。