自动查看哪些函数可能在c#中返回异常的方法

Toa*_*oad 6 c# exception detection

没有什么比看到你的代码在调试器中崩溃的方法更令人沮丧的是一个异常的方法而你没有尝试/捕获它.

有没有一种简单的方法来扫描您的源并标记所有可能引发异常的函数?

视觉辅助中的构建是否有一些隐藏选项可以将这些功能着色为特定颜色?

谢谢

[R

Cly*_*yde 6

所有代码,但最琐碎的可能会抛出异常(内存不足,至少).你可能最好在防御性地编写代码,至少使用全局try/catch而不是试图微观管理哪些代码段将会或不会抛出异常.

  • 沿着这些路线,同行评审代码.即使是一个天真的线,如Int32 x = x/y; 可能会抛出DivideByZero异常.最佳做法是验证方法的所有输入,以验证它们是否在可接受的范围内; 哪种代码分析通常会告诉您. (2认同)
  • 你们说我应该对每行代码进行一次try/catch,然后处理所有可能发生的事情.这会产生一个丑陋的代码.让我们假设没有发生内存异常这样的灾难性事情(在这种情况下你最好记录事件并让它死掉),我正在编码时想知道哪些方法可能会给出(记录的)异常.一个很好的例子是Int32.Parse(string).如果vis studio以某种方式说:看出来,可能会抛出:Null异常或formatexception会很好.我可以处理它 (2认同)

Jar*_*Par 5

不,没有办法自动执行此操作,也没有一种方法可以获取方法抛出的所有可能异常的列表.以下是几个原因

  1. 考虑隐式抛出的异常,例如StackOverflowException,可以随时从任何方法抛出.您必须假设CLR中的任何方法都可以抛出这些类型的异常
  2. 反射和/或委托可以隐藏在特定方法中调用的实际代码,因此您无法检查方法的所有可能代码路径.
  3. 这需要检查IL与元数据.
  4. 在.Net中,不需要记录API明确抛出的异常


76m*_*mel 3

我认为redgate有一些针对“异常猎人”的工具,他们在试用后收费。

http://www.red-gate.com/products/Exception_Hunter/index.htm