try catch быстрее чем @ ?

1,00
р.
try { include('') } catch(e) { die('error') }
или
@include('') or die('error')
или
if (file_exists('')) { include('') }
или
$result = ('SELECT 1 FROM files WHERE file_name="" LIMIT 1') if ($result) { include('') }


Ответ
Правильнее. Собака не избавляет от ошибки, она лишь подавляет ее вывод
А try-catch позволяет не только подавить, но и еще принять какие-то конкретные меры. по скорости - очень забавно. Если все идет гладко, это самый быстрый способ, за исключением просто голого кода. При возникновении ошибки - один из самых медленных.
<?php $time = microtime(true) for($i=0 $i<1000000 $i++){ @divByZero($i,0) } print((microtime(true)-$time).'<br />') //1.66923713684 - делим на 0 //1.25963785172 - делим на 3
$time = microtime(true) for($i=0 $i<1000000 $i++){ try{ divByZeroE($i,0) }catch(Exception $e){<br> } } print((microtime(true)-$time).'
') //5.61499404907 - делим на 0 //0.690489969254 - делим на 3
$time = microtime(true) for($i=0 $i<1000000 $i++){ divByZeroIfOnly($i,0) } print((microtime(true)-$time).'<br />') //0.69531083107 - делим на 0 //0.69578036312 - делим на 3
function divByZero($a,$b){ return $a/$b }
function divByZeroE($a,$b){ if($b==0) throw new Exception('Division By Zero') return $a/$b }
function divByZeroIfOnly($a,$b){ if($b==0) return false return $a/$b }
теперь полный? =)