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

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

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

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

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

深度内容

模块化Java:声明式模块化

本文是模块化Java系列文章的第4篇,介绍的是声明式模块化。文中描述了组件如何以声明的方式来定义并组织在一起,而无需让代码依赖于OSGI API。

Ian Robinson和Jim Webber谈论基于Web的整合

本采访是在伦敦举行的QCon2009上记录的,Ian Robinson和Jim Webber探讨了如何将Web作为整合平台以及REST在理论上和实践中的好处。

项目管理修炼之道(精选版)

项目管理对于项目成败至关重要,但实践中每个项目都有自己的独特性,没有现成的解决方案可以套用。书中从应对实际风险的角度出发,讲述了从项目启动、项目规划到项目结束的整个管理流程,展示了作者的思考过程。本迷你书从原书中精选出5个章节。

那是鸟,还是飞机?不,那是超人!

在这个演讲中,Fred将会揭示敏捷的一些外在因素,并会重点关注敏捷获得成功的内在原因。从案例研究和真实的项目经验来看,Fred认为:工具、管理体系都不能让你变得敏捷。敏捷的成功,植根于士气高涨、充分授权的工作者身上,他们能够以不同以往的方式思考问题。

访谈和书摘:Eben Hewitt的新书《Java SOA Cookbook》

Java SOA Cookbook

Eben Hewitt的新书《Java SOA Cookbook》从Java实现的角度讨论了面向服务架构。Eben在书中讨论了SOA基础、工具、最佳实践和SOA治理等主题。

Mark Richard的《Java消息服务》第二版

Mark Richards的新书《Java消息服务》第二版覆盖了JMS的许多主题, 包括发布和订阅模式以及点对点模式,消息过滤和事务等。InfoQ与Mark谈论了跟他的新作。

模块化Java:动态模块化

本文是“模块化Java”系列文章的第三篇,讨论动态模块化,内容涉及如何解析bundle类、bundle如何变化、以及bundle之间如何通信。

让测试也敏捷起来

对于测试组织来说,敏捷方法带来的快速迭代却让测试本身变得困难起来:缺乏“足够详细的文档”,缺乏“仔细设计用例的时间”等等。在本演讲中,段念将与大家探讨如何在敏捷过程中进行测试。