VB.NET
1), Если Не x Является "нечто" (вместо <> "нечто")
2) "OrElse" и короткое замыкание "AndAlso" (вместо просто "Или" и "И", которые действуют по-другому)
3) Ничто (вместо Пустого указателя)
Исключения используются не только в исключительных случаях.
Этот сценарий фактически использует исключения, чтобы убедиться, что пользователь вышел из системы. На этом этапе сценария очень дорого обходится, чтобы выяснить, какие данные должны быть удалены, поэтому на самом деле быстрее просто удалить все это и перехватить исключения.
try {
GDS::$DB->exec('DELETE FROM sessions WHERE session_id = ' . session_id());
GDS::$DB->exec('DELETE FROM sessions WHERE user_id = ' . $this->data['user_id']);
} catch(PDOException $ex) {}
session_regenerate_id(true);
setcookie('bis_[user_id]', 0, time() - 1, null, null, false, true);
setcookie('bis_[session_start]', 0, time() - 1, null, null, false, true);
setcookie('bis_[session_time]', 0, time() - 1, null, null, false, true);
В этом весь смысл исключений - у вас может быть несколько разных блоков catch, чтобы перехватывать любые исключения, которые вы хотите обработать. Данные исключения должны быть где-то назначены, отсюда и переменная. Вы можете просто сделать что-то вроде unset($e)
внутри блока catch, если вы действительно не хотите видеть эти предупреждения ... или отключить предупреждения (как правило, плохая идея).
Нет, но вы можете сбросить его.
try {
...
} catch (Exception $e) {
unset($e);
}
Я предполагаю, что вы ловите исключение только потому, что не должны, а хотите. Вы должны использовать catch
, если хотите использовать try
. поэтому мнения людей о том, является ли плохой идеей поймать исключение, не имеют значения. Следует приложить усилия для достижения требуемого результата без использования try/catch
. Насколько я знаю, альтернативы нет.
Я использую что-то подобное для моего движка шаблонов.
//array of templates ordered by version new to old.
for($templates as $tpl){
try {
$output = render($tpl,$data);
//it worked
break;
} catch(ErrorException $e){
unset($e);
}
}
if(!empty($output)){
return $output;
}