Это не снижает производительность (конечно, не заметно), но действительно выглядит ужасно.
Помните золотое правило: читаемый код часто быстрее кода. Сначала создайте читаемый код и изменяйте его, только если он оказывается слишком медленным.
Сгруппируйте ваши блоки try-catch в логические порции исходного кода (например, один для открытия потока и чтения из него данных, один для всей последующей обработки), и разработчики вашего обслуживания будут благодарны вам за это.
Вам также следует учитывать, что если ваш первый блок catch, перехватывающий исключение, не завершается внезапно (то есть выполнение продолжается в обычном потоке), дополнительные исключения могут быть вызваны последующими инструкциями, которые полагаются на предыдущие, успешно завершающиеся, которые являются ложными и могут замедлить ваш код.