Skip to content

Instantly share code, notes, and snippets.

@Chikitonik
Created September 18, 2017 13:33
Show Gist options
  • Save Chikitonik/788788a36a317b646c009cf3379f6e8b to your computer and use it in GitHub Desktop.
Save Chikitonik/788788a36a317b646c009cf3379f6e8b to your computer and use it in GitHub Desktop.
JavaRush исключения Thread.UncaughtExceptionHandler
public class Solution {
/**
* [2] Создание обработчика исключений:
* Создается объект нашего созданного класса OurHandler
*/
public static OurHandler handler = new OurHandler();
public static void main(String[] args) {
Thread thread = new TestedThread();//[4] Создание нити
thread.setUncaughtExceptionHandler(handler); //Указываем обработчика исключений для этой нити, т.е. что будет перехватывать вместо стандартного try-catch
thread.start(); //запуск нити
thread.interrupt();//прерывание нити, так как в этот момент нить "спит" Thread.sleep(3000) три секунды, то будет выбрасываться исключение
}
/**
* [3] Класс наследующий нить, с методом, описывающим действие Нити и сообщением при ее прерывании
*/
public static class TestedThread extends Thread {
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException x) {
throw new RuntimeException("Стандартное сообщение при выбросе исключения, если не подключить uncaughtException");
}
}
}
/**
* [1] Создаем класс, реализующий интерфейс Thread.UncaughtExceptionHandler, в котором только один метод
* Все, что сделал в методе - добавил сообщение при возникновении исключения
*/
public static class OurHandler implements Thread.UncaughtExceptionHandler {
@Override
public void uncaughtException(Thread t, Throwable e) {
System.out.println("Это сообщение при возникновении исключения пойманое uncaughtException");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment