Может я чет не догоняю начел делать ядро на пдо прочитал куча уроков. Многие кидают код подключения пдо в глубИлья чуть поглубже. Все делают ошибкуОбработка исключений
Поскольку практически КАЖДЫЙ мануал по PDO считает своим долгом продемонстрировать в корне неверный способ обработки исключений, я должен сделать специальное пояснение.
Обычно пример выглядит как-то так
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
die('Подключение не удалось: ' . $e->getMessage());
}
Так вот, дети, запомните: так делать не надо НИКОГДА.
Для того, чтобы всего лишь показать ошибку, try..catch используют только дураки:
- во-первых, этот код избыточен: РНР покажет ошибку и так, безо всяких try..catch.
- во-вторых, этот код гораздо менее гибкий: он выводит ошибку ТОЛЬКО на экран, в то время как исключение улетит туда же, куда и все остальные ошибки: либо в лог файл, либо на экран, в зависимости от глобальных настроек.
- в-третьих, этот код лишает нас возможности обрабатывать все ошибки централизованно, в едином exception handler-е.
Поэтому использовать try..catch нужно только тогда, когда вы собираетесь ОБРАБОТАТЬ ошибку - то есть, совершить какое-то действие, связанное с ФАКТОМ ошибки - откатить транзакцию, например. Для того же, чтобы просто выдать сообщение об ошибке, try..catch использовать не нужно - PHP прекрасно справится сам
Поскольку практически КАЖДЫЙ мануал по PDO считает своим долгом продемонстрировать в корне неверный способ обработки исключений, я должен сделать специальное пояснение.
Обычно пример выглядит как-то так
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
die('Подключение не удалось: ' . $e->getMessage());
}
Так вот, дети, запомните: так делать не надо НИКОГДА.
Для того, чтобы всего лишь показать ошибку, try..catch используют только дураки:
- во-первых, этот код избыточен: РНР покажет ошибку и так, безо всяких try..catch.
- во-вторых, этот код гораздо менее гибкий: он выводит ошибку ТОЛЬКО на экран, в то время как исключение улетит туда же, куда и все остальные ошибки: либо в лог файл, либо на экран, в зависимости от глобальных настроек.
- в-третьих, этот код лишает нас возможности обрабатывать все ошибки централизованно, в едином exception handler-е.
Поэтому использовать try..catch нужно только тогда, когда вы собираетесь ОБРАБОТАТЬ ошибку - то есть, совершить какое-то действие, связанное с ФАКТОМ ошибки - откатить транзакцию, например. Для того же, чтобы просто выдать сообщение об ошибке, try..catch использовать не нужно - PHP прекрасно справится сам