Я провел очень маленький и ненаучный тест и обнаружил, что нет никакой разницы между наличием улова, который никогда не вызывается, и тем, что он находится вне оператора try catch. Я запускал каждый из этих двух сценариев 5 раз каждый через свой профилировщик и усреднял общее время.
Результаты
- С оператором Try / Catch: 1,34 секунды
- Без оператора Try / Catch: 1,3 секунды
Код
Try / Поймать
<?php
foreach(range(1,200000) as $i) {
try {
if ($i % 5 == 0 && $i % 3 == 0) echo "fizzbuzz";
elseif ($i % 5 == 0) echo "fizz";
elseif ($i % 3 == 0) echo "buzz";
else echo $i;
} catch (Exception $e) {
echo sin($i) * cos($i * pi());
}
}
?>
Нет пробовать / ловить
<?php
foreach(range(1,200000) as $i) {
if ($i % 5 == 0 && $i % 3 == 0) echo "fizzbuzz";
elseif ($i % 5 == 0) echo "fizz";
elseif ($i % 3 == 0) echo "buzz";
else echo $i;
}
?>