Как изменить сообщение об исключении, выданное стандартным классом Java? - PullRequest
1 голос
/ 16 января 2012

в приложении, которое я создал и которое использует стандартные классы 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 ]

2 голосов
/ 16 января 2012

Поймай нежелательное исключение и брось желаемое исключение. Примерно так:

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.

0 голосов
/ 16 января 2012

По моему мнению, определение нового класса, расширяющего цвет, будет лучшим способом изменить тип исключения.Есть причина, по которой он ограничивает диапазон красного цвета от 0 до 255. Если вы пытаетесь переопределить это, вам, возможно, придется переопределить некоторую дополнительную логику позже, чтобы исправить это.

0 голосов
/ 16 января 2012

Вы должны быть в состоянии отловить исключение, когда вы проверяете диапазон значений, и вывести там сообщение об ошибке со значениями для r, g, b & a.

Или вы можете пройтись по коду в отладчике и проверить значения таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...