gpt4 book ai didi

java的setColor导致非法参数异常或断言被跳过

转载 作者:行者123 更新时间:2023-12-02 10:05:32 25 4
gpt4 key购买 nike

我有这段代码(从 JPanel 继承的类中的 paintComponent 调用。

    assert(red >= 0);
assert(red <= 255);
assert(green >= 0);
assert(green <= 255);
assert(blue >= 0);
assert(blue <= 255);
Color color = new Color(red, green, blue);

一段时间后我得到一个异常:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Color parameter outside of expected range: Red
at java.awt.Color.testColorValueRange(Unknown Source)
at java.awt.Color.<init>(Unknown Source)
at java.awt.Color.<init>(Unknown Source)
at display.DrawCanvas.drawLed(DrawCanvas.java:55)
at display.DrawCanvas.paintComponent(DrawCanvas.java:36)
at javax.swing.JComponent.paint(Unknown Source)

DrawCanvas.java:55(第 55 行)是上面代码片段中的最后一行。

当所有值都在 0 到 255(包括在内)之间时,参数怎么可能超出范围?

最佳答案

默认情况下不启用 Java 断言。

  • 从命令行传递 -ea 命令行标志以启用断言。

    java -ea your.main.ClassHere
  • 在 Eclipse 中,您必须转到特定的运行配置并在“VM 参数”中添加 -ea 作为 described here .

  • 从 IntelliJ 来看,它是类似的。在您的特定运行配置中,在“VM 选项”中添加 -ea

无论您的 IDE 是什么,目标都是让它在 java 之后、主类名称之前添加 -ea 以启用断言。

一旦您启用了断言,它们就会在您收到 IllegalArgumentException 之前以 AssertionError 停止您的程序。

这种特殊情况会起作用,因为您在注释中指出该值是 int - 267。请注意,如果您碰巧有 float 值,那么它们可能会传递大于 1.0f 且小于或等于 255.0f 的无效值的断言.

关于java的setColor导致非法参数异常或断言被跳过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55366978/

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