【发布时间】:2021-03-18 04:08:01
【问题描述】:
在我创建的使用 AWT 标准类的应用程序中,对 Color 构造函数的调用会引发以下异常消息:
运行:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Color parameter outside of expected range: Red
at java.awt.Color.testColorValueRange(Color.java:310)
at java.awt.Color.<init>(Color.java:395)
at java.awt.Color.<init>(Color.java:369)
at mandelbrotset.DrawingArea.translateColor(DrawingArea.java:106)
at mandelbrotset.DrawingArea.drawMandelbrotSet(DrawingArea.java:75)
at mandelbrotset.DrawingArea.paintComponent(DrawingArea.java:45)
at javax.swing.JComponent.paint(JComponent.java:1054)
有没有办法改变这个消息(包括在这种情况下红色组件的值)?
我想定义一个新类NewColor,它扩展Color并在构造函数中抛出修改后的异常,但是新类构造函数必须以调用super(red, green, blu)开始,因此调用标准testColorValueRange(int r, int g, int b, int a)并抛出标准异常。
感谢您的帮助。
【问题讨论】:
-
你总是可以捕捉到异常。否则你可以修改核心类中的字节码,这会吓到我。
-
您不能让 Java 在 JDK 代码中使用您的
NewColor类,您只会在您自己创建的实例中收到新消息。另外,testColorValueRange似乎是private,所以无论如何你都不能覆盖它。为什么不只记录您传递给引发异常的构造函数的参数? -
你在哪里打电话
new Color()?您不能在创建对象之前检查值吗?还是只使用调试器? -
你为什么要做这样的事情?