Как моделировать необработанное исключение в Java

Я создаю некоторый многопоточный код, и я создал класс JobDispatcher, который создает потоки. Я хочу этот объект обработать любые необработанные исключения в рабочих потоках, и таким образом, я использую

Thread.setUncaughtExceptionHandler(this);

Теперь, я хотел бы протестировать эту функциональность - как я могу генерировать необработанное исключение в выполнении () метод моего объекта рабочего?

9
задан BoltClock 22 November 2011 в 18:00
поделиться

3 ответа

Просто вызовите любое исключение.

Например:

throw new RuntimeException("Testing unhandled exception processing.");

Завершено:

public class RuntimeTest
{
  public static void main(String[] a)
  {
    Thread t = new Thread()
    {
      public void run()
      {
        throw new RuntimeException("Testing unhandled exception processing.");
      }
    };
    t.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler()
    {
      public void uncaughtException(Thread t, Throwable e)
      {
        System.err.println(t + "; " + e);
      }
    });
    t.start();
  }
}
14
ответ дан 4 December 2019 в 08:14
поделиться

Вы должны бросить какое-нибудь непроверенное исключение. Непроверенное исключение не требует, чтобы ваш код его обрабатывал, и поэтому является хорошим кандидатом на то, чтобы пройти весь путь вниз по стеку вызовов.

Вы можете выбрать RuntimeException, например, или даже что-то вроде AssertionError, если хотите минимизировать вероятность того, что какая-то часть кода поймает исключение и обработает его до того, как оно достигнет вашего обработчика.

6
ответ дан 4 December 2019 в 08:14
поделиться

В чем проблема с простой генерацией исключения:

throw new Exception("This should be unhandled");

Внутри вашего метода выполнения. И, конечно, не уловил. Это должно вызвать ваш обработчик.

6
ответ дан 4 December 2019 в 08:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: