Кто может объяснить, откуда этот кусок кода
public static class OurUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {
       @Override
       public void uncaughtException(Thread t, Throwable e) {
           System.out.println(t.getName() + ": " + e.getMessage());
       }
   }
знает о том, что вызвался этот кусок кода
catch (InterruptedException e) {
                throw new RuntimeException("My exception message");
И почему не вызывается в таком случае конструктор/сообщение ("My exception message") Отдельно от System.out.println(t.getName() + ": " + e.getMessage()); Да, я указал обработчик, но все-таки не понимаю как это работает внутри и почему оно должно именно так работать
threadA.setUncaughtExceptionHandler(handler);
        threadB.setUncaughtExceptionHandler(handler);