Цитаты и пробелы в кодировке URL

VB.NET

1), Если Не x Является "нечто" (вместо <> "нечто")
2) "OrElse" и короткое замыкание "AndAlso" (вместо просто "Или" и "И", которые действуют по-другому)
3) Ничто (вместо Пустого указателя)

30
задан Matthieu Napoli 27 January 2011 в 18:18
поделиться

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);
-1
ответ дан 28 November 2019 в 00:21
поделиться

В этом весь смысл исключений - у вас может быть несколько разных блоков catch, чтобы перехватывать любые исключения, которые вы хотите обработать. Данные исключения должны быть где-то назначены, отсюда и переменная. Вы можете просто сделать что-то вроде unset($e) внутри блока catch, если вы действительно не хотите видеть эти предупреждения ... или отключить предупреждения (как правило, плохая идея).

7
ответ дан 28 November 2019 в 00:21
поделиться

Нет, но вы можете сбросить его.

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;
}
11
ответ дан 28 November 2019 в 00:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: