如何更改java标准类抛出的Exception消息?

时间:2012-01-16 15:02:51

标签: java exception

在我使用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)并抛出标准异常。

感谢您的帮助。

3 个答案:

答案 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之间。如果你试图覆盖它,那么你可能不得不稍后重写一些逻辑来纠正它。