c# - 如果未处理异常则发出警告

标签 c# exception try-catch

如果代码有可能抛出未包含在 try/catch block 中的异常,是否有技术或第三方工具会生成警告?

最佳答案

我建议您最好考虑为什么代码生成异常,而不是简单地且不进一步考虑地要求将所有代码包装在某些 try/catch/finally 或另一个中。 (顺便说一句,如果这是可能的,让它消失将是微不足道的 - 开发人员只需将主入口点包装在 try/catch 中,就不会再出现警告)。

Code Contracts是一个工具,它不会完全满足您在这里所要求的功能,但它将帮助您通过编译器警告在编译时推断代码的运行时行为。这将告诉您诸如客户端调用何时引用返回值并且服务方法可能返回 null 之类的信息。这是找到导致异常的行为的根源,而不仅仅是要求您处理它们。在这种情况下,您有一个错误的编程假设 - 您不想捕获此异常,而是希望通过从一开始就阻止它发生来消除它。

我会在处理超出您控制范围的外部性的地方保存异常处理(例如,当您的应用程序下载文件时,用户拔掉网络电缆)。在我看来,您似乎正在寻找 Java 风格的检查异常,而 C# 没有。但是,如果您查看外部库的方法 XML 注释,您可以看到它们可能生成哪些异常,并处理这些特定情况。如果您实际上只是为了外部性而这样做(并使用代码契约来管理内部假设),那么花费的额外时间不会太多。

关于c# - 如果未处理异常则发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8405354/

相关文章:

c++ - close() 抛出什么异常类型?

python - 我可以从 pdb 中引发异常吗? (用于调试)

c# - 最小起订量 HttpWebRequest 对象

c# - 中继器未获取客户端更新的项目

exception - 引发异常

node.js - 如何使用 Sequelize 特定错误?

vb.net - 有没有办法找出对象是否已被处理()?

c# - 如何将 WPF 窗口嵌入另一个窗口并通过 XAML 或代码调整其大小

c# - 从 VSTO outlook 插件打开 WPF 窗体

php - 如何使用 Laravel 5.2 捕获 MySQL 错误代码和消息?