在我使用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)
并抛出标准异常。
感谢您的帮助。
答案 0 :(得分:1)
捕获不需要的异常并抛出所需的异常。 像这样:
try
{
blah; // throws the unwanted exception.
}
catch (UnwantedExceptionType exception)
{
throw new DesiredException(exception); // option 1.
// or
throw new DesiredException(new info, exception) // option 2.
}
您可以创建一个新的异常类(上例中的DesiredException),它接受现有异常并将值“更改”为您想要的值。
也有可能(在上面的代码中)UnwantedExceptionType和DesiredException是相同的类型,你只需在DesiredException中设置所需的值。
答案 1 :(得分:0)
您应该能够捕获测试值范围的异常,并在那里输出一个错误消息,其中包含r,g,b和amp;的值。一个。
或者您可以在调试器中遍历代码并以这种方式验证值。
答案 2 :(得分:0)
在我看来,定义一个扩展颜色的新类是修改Exception类型的最佳方法。有一个原因是它将红色的范围限制在0到255之间。如果你试图覆盖它,那么你可能不得不稍后重写一些逻辑来纠正它。