是否定义了“ProbableBugException”代码气味,偏执或良好做法?

时间:2009-05-21 13:45:15

标签: java

在我的Java代码中,我偶尔会遇到这样的情况,即我必须从库函数中捕获一个已检查的异常,而我的非常确定在我的用例中不会出现。

此外,在编码时,我有时会注意到我依赖于来自其他模块(我自己)的某些输入来拥有或不拥有特定功能。例如,我可能希望字符串处于某种格式等。在这些情况下,我经常会进行验证步骤,尽管我控制自己发送输入的代码。

目前,我正在开发一种非常复杂的产品,我希望它非常可靠。除此之外,我希望它从捕获的异常中收集信息并自动提交错误报告。 对于上述两种情况,我因此定义了一个(未经检查的)“ProbableBugException”,它告诉我在传递输入数据的代码中犯了错误。

这是a)愚蠢,b)偏执或c)良好做法?这将是主观的,我会提出三个维基答案,这样我们就可以在没有代表翘曲的情况下投票。

ETA 感谢Svend指出Java有断言,我没有意识到这一点。断言几乎与我的问题有关,但我只是从C中知道它们并且从未在那里使用它们。

4 个答案:

答案 0 :(得分:4)

我认为使用断言是你真正想要的(“可能是bug”)。

http://java.sun.com/j2se/1.4.2/docs/guide/lang/assert.html

答案 1 :(得分:2)

这很愚蠢,因为:

  • 异常应该更加具体,例如InvalidInputException
  • 你应该更加思考输入方面,如果你觉得自己需要那种例外,那很可能是不稳定的

答案 2 :(得分:1)

这是一种很好的做法,因为:

  • 你可能在输入端有一个同事编码而且你们俩可能互相误解了
  • 如果你犯了错误,修理它就变得微不足道了
  • 在输入端是某种插件的情况下,它可以帮助插件开发人员(可能是外部的)提供正确的输入。

答案 3 :(得分:0)

我总是期待未经预料到的。

我经常使用这样的代码:( $ div永远不会是我的代码中的0)

if( $div != 0 ) {
   $var = $var2 / $div;
} else {
    /*
     * It should never happen
     */   
    throw Exception( 'relevant message' );
}

我总是保护自己免受我和其他人的伤害