Я понимаю, почему вы хотите это сделать, но я думаю, что это плохая практика - генерировать и перехватывать исключение из run () (что невозможно по причине, указанной ниже).
Исключение, сгенерированное из run (), будет рассматриваться как исключение "не проверено" в Java. Такое исключение не должно быть поймано программистом, и об этом должна позаботиться виртуальная машина.
Непроверенное исключение обычно происходит во время выполнения, например: NullPointerException, IllegalStateException.
IOException, являющийся подклассом java.lang. Исключение считается Проверенным Исключением, поэтому должно обрабатываться с использованием try catch в run () или в методе, вызываемом run ().