13
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('');
}
good7
  • 143

1 Answers1

12

Правильнее. Собака не избавляет от ошибки, она лишь подавляет ее вывод

А 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){

}

} print((microtime(true)-$time).'<br />'); //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; }

теперь полный? =)

knes
  • 25,879