Ловит ли исключение конкретного типа быстрее, чем ловушка исключений общего типа? - PullRequest
0 голосов
/ 02 июля 2010

Я хочу знать конкретное исключение, например NullPointerException ex быстрее, чем Exception ex.

Например, мой код выбрасывает NullPointerException

try {
   ...
} catch (NullPointerException e) {
   ...
}

или

try {
   ...
} catch (Exception e) {
   ...
}

Какой из них быстрее? Я думаю, что система исключений зависит от флагов, поэтому определенный тип быстрее из-за меньшего контроля. Но мне интересно.

А если ответ - да, скажи почему? Спасибо.

Нет: вы полагаете, что в коде нет сбоев.

1 Ответ

1 голос
/ 09 июля 2010

Применяются обычные предостережения ... Убедитесь, что вы не оптимизируете преждевременно .Программа для наглядности вместо скорости.Если программа работает слишком медленно, используйте профилировщик, чтобы найти проблему.

Если предположить, что Java и никакие исключения не генерируются, они одинаково быстры.Операция athrow никогда не вызывается, поэтому поиск по таблицам исключений выполняться не будет, и сопоставление классов исключений не требуется.

Если вы выбросите исключение в операторе try содин специальный обработчик исключений, который будет соответствовать исключению, тогда поиск в таблице исключений будет соответствовать определенному классу исключений незначительно быстрее, чем общий класс исключений, потому что он не будет подниматься по иерархии классов, чтобы найти соответствующий класс предков,По сути, я имею в виду, что вы должны сохранять менее 10 инструкций ЦП, а генерируемые исключения должны быть исключительно редкими.

Если вы генерируете множество исключений и имеете несколько блоков catch, ситуация слишком сложна, чтобы сказать, что это будетбыстрее или медленнее поймать единственное исключение, подобное классу предков;это зависит от деталей.

Функция findExceptionBlockInMethod в исключение Каффе. c показывает одну реализацию кода соответствия исключений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...