InfoQ

新闻

评论:Exception Hunter

作者 Jonathan Allen译者 朱永光 发布于 2008年4月17日 上午12时8分

社区
.NET
主题
调试
标签
静态分析

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

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

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

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

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

Source Code

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

  • 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

相关赞助商

InfoQ中文站.NET社区,关注.NET和微软的其他企业开发解决方案,通过新闻、文章、视频访谈和演讲以及迷你书等为中国.NET社区提供一流资讯。

1 条回复

回复

其实这个东西我觉得做好的话很有用 发表人 超 陆 发表于 2008年4月17日 上午8时58分
  1. 返回顶部

    其实这个东西我觉得做好的话很有用

    2008年4月17日 上午8时58分 发表人 超 陆

    不过想做好不太容易,因为.Net里好像没有比较方便的方法告诉编译器等软件在什么情况下会抛出什么异常。 这个其实可以用Attribute来解决,但是,麻烦的是FCL和其它很多库都没有采用这个东西,要统一也是比较困难的。 但是,如果做好了,这种东西真的很有用,写代码时可以只写代码,不考虑异常,写完了用在工具的帮助下再处理,应该能大大地提高生产率。

独家内容

运用Ruby纤程进行异步I/O:NeverBlock和Revactor

Ruby 1.9的纤程(Fibers)和非阻塞I/O越来越收到关注了。我们对来自NeverBlock项目的Mohammad A. Ali和来自Revactor项目的Tone Arcieri进行了访谈。

与杨巍一起探讨OpenSocial

InfoQ中文站有幸与Google中国的产品经理杨巍先生在一起探讨了OpenSocial的相关话题,包括OpenSocial的初衷、构成要素、实现方式、以及要实现它的技术储备等等。

书评:敏捷模式──指向成功的路标

Ryan Cooper对Amr Elssamadisy的新书发表了评价,并认为书中提供了一种为实施敏捷量身定做的框架。本书并没有给出一种人人可用的敏捷方法,而是为读者提供一些模式和工具,用以找出哪些敏捷实践可以最有效地达到该组织机构的特定目标。

构建的可伸缩性和达到的性能:一个虚拟座谈会

这个由业界主要专家们参加的座谈会探究了在使应用程序具备尽可能好的伸缩性及性能的过程中所面临的挑战和思考过程。

OpenSocial的分析与实现

本视频主要对OpenSocial进行了分析,并对实现的方式进行了介绍。其中包括:OpenSocial的开发经验、Container Provider的技术准备、平台的构成要素、具体的规范、以及对未来的展望。

缓存系统MemCached的Java客户端优化历程

Memcached在大型网站被应用得越来越广泛,但是Java客户端并不多,本文作者基于现有的开源客户端进行了封装优化,并翔实记录了这一过程。

超越SOA:动态业务应用的新企业应用框架(2)

在他们文章的第二部分,作者探讨了动态业务应用的架构并介绍了资源容器的概念。他们示范了如何在JEE之上构建这个架构,以及它如何影响实现生产力。

使用ClickOnce细分发布版本

ClickOnce让WinForms应用程序的部署轻而易举。David Cooksey演示了如何在ASP.NET中编写一个HttpHandler来实现对ClickOnce部署的版本细分。