评论:Exception Hunter

  • 2008-04-16
  • 本文字数:682 字

    阅读完需:约 2 分钟

未处理的异常是任何应用程序的克星,特别发生在那些无用户交互的应用程序中的。理想情况下,编译器应该能检测并警告开发人员这些潜在的问题,但是目前的.NET 编译器甚至不能判定那些异常应该被抛出。

为了解决这个问题,Red Gate 发布了 Exception Hunter 。这个工具分析方法以判定它们会抛出哪些异常。生成的报告能交互式的查看或者链接到诸如 CruiseControl 这样的自动构建系统中。

类似 Red Gate 的大部分软件一样,Exception Hunter 有一个简单直观的界面。但是不幸的是,简单不总是代表着易用。虽然这个工具能生成报告,但它只能从命令行来执行。这么一个简单的任务在 GUI 中居然找不到地方可以调用。

更郁闷的是,方法列表并没有显示出那个方法会真正地抛出异常。一些方法被加粗显示,但这只表明它不是一个基类的子类。所以,用户不得不分别地展开每个方法.

其实上面提到的这些都可以忍受,但有一件事——误判的数量无比的多。来看看这个简单的 VB 应用程序

仅仅这几行代码能抛出的这些异常:

  • ArgumentException 6
  • ArgumentNullException 4, 6
  • ArgumentOutOfRangeException 4, 5, 6
  • FormatException 4, 6
  • IndexOutOfRangeException 6
  • InvalidCastException 6
  • InvalidOperationException 6
  • ObjectDisposedException 6
  • IO.PathTooLongException 6
  • NotSupportedException 6
  • NullReferenceException 6
  • OutOfMemoryException 4, 5, 6

人们无法想象一个微不足道的应用程序能生成这么多的异常。

虽然有效的异常分析将会为业界带来很多好处,但 Red Gate 的 Exception Hunber 表明我们如今还做不到这点。且人们不得不担心这是否是一个可以解决的问题。

查看英文原文: Review: Exception Hunter