我有這個代碼(在繼承自的類中調用)。paintComponentJPanel 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(包括)之間時,參數怎么可能超出范圍?
1 回答

慕絲7291255
TA貢獻1859條經驗 獲得超6個贊
默認情況下不啟用 Java 斷言。
從命令行中,傳遞命令行標志以啟用斷言。
-ea
java -ea your.main.ClassHere
從 Eclipse 中,您必須轉到特定的運行配置并添加“VM 參數”,如此處所述。
-ea
來自IntelliJ,這是相似的。在特定的運行配置中,添加“VM 選項”。
-ea
無論您的 IDE 如何,目標都是讓它在主類名之后和之前添加,以啟用斷言。-ea
java
一旦您啟用了斷言,那么在您獲得 .AssertionError
IllegalArgumentException
此特定情況將起作用,因為您已在注釋中指出該值是-- .請注意,如果您碰巧有值,則它們可能會傳遞具有大于和小于或等于 的無效值的斷言。int
267
float
1.0f
255.0f
添加回答
舉報
0/150
提交
取消