Добрый день. Задача: Строки нитей или строковые нити? Вот в чем вопрос 1. Метод getPartOfString должен возвращать подстроку между первой и последней табуляцией. 2. На некорректные данные getPartOfString должен бросить исключение: а) TooShortStringFirstThreadException, если имя трэда FIRST_THREAD_NAME. б) TooShortStringSecondThreadException, если имя трэда SECOND_THREAD_NAME. в) RuntimeException в других случаях. 3. Реализуйте логику трех protected методов в ThisUncaughtExceptionHandler используя вызовы соответствующих методов согласно следующим шаблонам: a) 1# : TooShortStringFirstThreadException : java.lang.StringIndexOutOfBoundsException: String index out of range: -1 б) java.lang.StringIndexOutOfBoundsException: String index out of range: -1 : TooShortStringSecondThreadException : 2# в) RuntimeException : java.lang.StringIndexOutOfBoundsException: String index out of range: -1 : 3# Требования: 1. Метод getPartOfString должен возвращать подстроку между первой и последней табуляцией строки string переданной ему в качестве первого параметра. 2. В случае некорректных данных метод getPartOfString должен бросить исключение TooShortStringFirstThreadException, если имя трэда(threadName) Solution.FIRST_THREAD_NAME. 3. В случае некорректных данных метод getPartOfString должен бросить исключение TooShortStringSecondThreadException, если имя трэда(threadName) Solution.SECOND_THREAD_NAME. 4. В случае некорректных данных метод getPartOfString должен бросить исключение RuntimeException, если имя трэда(threadName) не Solution.FIRST_THREAD_NAME или Solution.SECOND_THREAD_NAME. 5. Метод getFormattedStringForFirstThread должен возвращать строку сформированную из переданных параметров по шаблону указанному в задании. 6. Метод getFormattedStringForSecondThread должен возвращать строку сформированную из переданных параметров по шаблону указанному в задании. 7. Метод getFormattedStringForOtherThread должен возвращать строку сформированную из переданных параметров по шаблону указанному в задании. Суть проблемы. TooShortStringFirstThreadException, TooShortStringSecondThreadException - это непроверяемые исключения, которые должны перехватываться альтернативным обработчиком исключений:
protected void initThreads() {
        this.thread1 = new Thread(new Task(this, "A\tB\tC\tD\tE\tF\tG\tH\tI"), FIRST_THREAD_NAME);
        this.thread2 = new Thread(new Task(this, "J\tK\tL\tM\tN\tO\tP\tQ\tR\tS\tT\tU\tV\tW\tX\tY\tZ"), SECOND_THREAD_NAME);
        this.thread3 = new Thread(new Task(this, "\t\t"), "3#");

        //Установка объекта ThisUncaughtExceptionHandler в качестве обработчика непроверяемых исключений
        Thread.setDefaultUncaughtExceptionHandler(new ThisUncaughtExceptionHandler());

        this.thread1.start();
        this.thread2.start();
        this.thread3.start();

    }
При возникновении в методе getPartOfString исключения StringIndexOutOfBoundsException оно перехватывается в блоке try и данные считаются некорректными. Метод getPartOfString бросает, например, TooShortStringFirstThreadException. Откуда взять информацию об исключении, по причине которого брошено TooShortStringFirstThreadException?