Исключения - для пользовательских уведомлений или регистрации ошибок? - PullRequest
1 голос
/ 17 декабря 2011

Я пытаюсь выяснить, для каких исключений следует использовать;ведение журнала ошибок приложения или отображение ошибок пользователя, и, если и то, и другое, как я должен различать и обрабатывать ошибку пользователя (например, неудачный вход в систему) и ошибку приложения (например, сбой подключения к базе данных) с исключениями.

Например, допустим, пользователь пытается войти в систему, но не может (ошибка пользователя):

if(!$user->login($_POST)) {
    //$user->login() throws an Exception, throw new Exception("failed login"), on fail.
    catch(Exception $e) {
      print $e->getMessage();
    }
}

Или, возможно, произошла ошибка базы данных (регистрация ошибок):

public function query($query) {
$this->resource = mysql_query($query) or throw new Exception("Database error:" . mysql_error());
}

Какой из приведенных выше двух примеров будет подходящим вариантом использования, если либо?

1 Ответ

1 голос
/ 17 декабря 2011

Исключения для сигнализации исключительное поведение в части вашей программы.Во время нормальной работы ваша программа должна , а не , как правило, вообще генерировать исключения.Что-то вроде неудачного входа в систему является нормальным результатом вашего механизма входа, а не исключением.

[Неудачный вход в систему может быть исключением на конце user (еслиу пользователя была причина ожидать, что логин будет работать безоговорочно)!]

Типичные исключительные ситуации: нехватка памяти, нехватка места на диске, ошибка в соединении с базой данных или ошибка во время чтения илинаписание файла.Все эти вещи, которые вы обычно ожидаете, сработают, поэтому ошибка - исключительное условие.

См. мой предыдущий ответ для получения более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...