c# - 捕获异常、验证输入或两者兼而有之?

标签 c# .net exception-handling validation

我正在像这样获取 RSS 提要:

SyndicationFeed rss = SyndicationFeed.Load(XmlReader.Create(textBox1.Text));

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

我应该在调用该行之前尝试验证 Uri(确保它不为 null、404、正确的文档类型等)还是应该只处理异常?我知道我已经读过很多次关于 SO 的内容,即异常应该用于真正特殊的情况,我同意这似乎不满足该先决条件,但处理异常似乎更容易。

最佳答案

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

此外,让我再次引用 blog post埃里克·利珀特 (Eric Lippert) 关于异常(exception)情况的文章。在您的情况下,可能会发生令人烦恼的异常和外生异常,因此您可能应该捕获它们。但请确保不会发生那些愚蠢的事情。

关于c# - 捕获异常、验证输入或两者兼而有之?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6227431/

相关文章:

silverlight - 如何在不安装开发人员运行时检测和包装 "debugging resource strings are unavailable"?

JavaFX 2 - 捕获所有运行时异常

c# - C# 中的一般异常处理

c# - 为什么 ModelState.IsValid 总是返回 true?

c# - 右键单击 DataGridView 的列标题时,如何正确定位上下文菜单?

c# - DataGridView 是否总是依赖于列值的公共(public)属性?

c# - 使用正则表达式抓取'\'之后的部分

.net - VB.NET 扩展方法

c# - 在 WPF MVVM 中验证和保存数据如何正常工作?

c# - 网络服务包装器