gpt4 book ai didi

java - 自动 IllegalArgumentException 消息?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:33:18 27 4
gpt4 key购买 nike

我总是检查公共(public)函数的参数,并在出现问题时抛出异常。 (对于私有(private)助手,我使用断言)。

像这样:

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 中),然后消息不反射(reflect)更改。或者我更改了条件而忘记更改消息。

如果我能写这样的东西就好了:

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 开头的行。)

要在异常中重现条件是恕我直言,包括太多的实现细节。如果您的异常消息根据契约(Contract)条款描述了契约(Contract)中的违规行为(例如“未给出父对象”、“金额不能为负数”),则无需在每次条件更改时都更改它。

关于java - 自动 IllegalArgumentException 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3330828/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com