Насколько я помню из моих прежних дней чтения байт-кода, количество предложений catch не оказало существенного влияния на производительность.
Когда происходит исключение, JVM знает, что нужно перейти к последовательности байт-кода, котораяреализует предложение catch путем поиска исключения в таблице, являющейся частью байт-кода класса.В общем, каждый метод, который перехватывает исключение, связан с таблицей исключений, которая является частью файла класса, вместе с байт-кодом метода.В таблице исключений есть запись для каждого перехваченного исключения каждым блоком try.Каждая запись содержит: начальную и конечную точки, смещение счетчика программы (ПК) в последовательности байт-кода, к которому необходимо перейти, и постоянный индекс пула типа исключения (т. Е. Класса), который перехватывается.
Еслиисключение выдается во время выполнения метода, JVM ищет в таблице исключений совпадение.Сопоставление происходит, если текущий ПК находится в пределах диапазона, указанного в записи, и если выброшенный класс исключений является тем, который указан в записи (или является его подклассом).
Итак, ответ на ваш вопросзависит от того, как этот поиск реализован.Насколько я знаю, JVM просматривает таблицу в том же порядке, в котором записи появляются в таблице, и когда первое совпадение найдено, JVM устанавливает ПК на новое место и продолжает выполнение оттуда.
Я думаю, что если бы у вас не было МНОГО исключений, вы бы не заметили значительного влияния, но если бы я был вами и если бы эта проблема была для меня критической, я бы сравнил это с конкретной JVM, которую вы используете.
Ori