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