自动IllegalArgumentException消息?

我总是检查公共函数的参数,并在发生错误时抛出异常。 (对于私人帮手我使用断言)。

喜欢这个:

if( a < 0 || a >= b )
    throw new IllegalArgumentException("'a' must be greater or equal to 0 and 
        smaller than b ");

但它总是让我烦恼,写下这些错误信息。 这个消息对我来说似乎是多余的,因为这个消息只是对声明的否定

a < 0 || a >= b

我经常会发生这样的情况:我用重构来重命名变量(在eclipse中),然后这个消息不能反映这些变化。 或者我改变条件并忘记更改消息。

如果我可以写下这样的话,那将会很棒:

assertArgument(a >= 0 && a < b);

这应该引发IllegalArgumentException,并带有类似的消息

"violated argument assertion: a >= 0 && a < b."

在C中,你可以编写一个宏(实际上在C中assert只是一个宏)。 有没有一种简单的方法在java中做这样的事情?

谢谢!


在C语言中,你不能使用宏来做到这一点,但在cpp(C预处理器)中,你可以:-)如果你真的想这样做,没有任何东西限制你在编译之前在java源代码上运行cpp。 这会让你使用cpp风格的宏(你可能需要从cp输出中#line以#开头的行)。

在例外中重现条件是恕我直言,包括太多的实现细节。 如果您的异常消息描述了合同违约(例如“没有给定父对象”,“金额不能为负数”),您不需要在每次情况变化时更改它。

链接地址: http://www.djcxy.com/p/76227.html

上一篇: Automated IllegalArgumentException message?

下一篇: assertEquals throws a NullPointerException, but equals method does not