TGViewer
PHP | Вопросы собесов PHP | Вопросы собесов @easy_php_ru · 2.31K subscribers
Post #2371 367
🤔 В чем заключается обработка ошибок и исключений?

Обработка ошибок в PHP – это механизм, который помогает находить, интерпретировать и корректно реагировать на ошибки во время выполнения программы. Для этого в PHP используются два подхода:

Традиционные ошибки (error_reporting, set_error_handler)
*Исключения (try-catch, throw)

🟠Традиционная обработка ошибок
PHP изначально использовал механизм ошибок, которые делятся на несколько типов:
E_ERROR – фатальная ошибка, завершает выполнение скрипта.
E_WARNING – предупреждение, но скрипт продолжает выполняться.
E_NOTICE – уведомление о потенциальной проблеме.
echo $undefined_var; // E_NOTICE: Undefined variable


🚩Способы обработки ошибок

🟠error_reporting() – управление уровнем ошибок
Функция error_reporting() позволяет включать или выключать определённые типы ошибок.
error_reporting(E_ALL & ~E_NOTICE); // Показывать все ошибки, кроме E_NOTICE


🟠set_error_handler() – создание пользовательского обработчика ошибок
Можно задать свою функцию, которая будет реагировать на ошибки.
function myErrorHandler($errno, $errstr, $errfile, $errline) {
echo "Ошибка [$errno]: $errstr в файле $errfile на строке $errline";
}
set_error_handler("myErrorHandler");

// Вызовем ошибку
echo 10 / 0; // Division by zero (E_WARNING)


🟠error_log() – запись ошибок в файл
Ошибки можно не выводить на экран, а записывать в файл.
error_log("Ошибка: что-то пошло не так!", 3, "errors.log");


🚩Исключения (`try-catch`)

С версии PHP 5 появился механизм исключений, который более удобен и структурирован. Исключения позволяют:
Перехватывать ошибки и управлять их обработкой.
Использовать вложенные блоки try-catch для детальной обработки.
Создавать собственные классы исключений.
try {
if (!file_exists("somefile.txt")) {
throw new Exception("Файл не найден");
}
} catch (Exception $e) {
echo "Ошибка: " . $e->getMessage();
}


🟠Классы исключений
PHP позволяет использовать предопределённый класс Exception, а также создавать свои.
class MyException extends Exception {}

try {
throw new MyException("Это моя ошибка");
} catch (MyException $e) {
echo "Поймано исключение: " . $e->getMessage();
}


🟠Блок `finally`
Используется для выполнения кода в любом случае – независимо от того, было исключение или нет.
try {
echo "Попытка выполнить код\n";
} catch (Exception $e) {
echo "Ошибка поймана\n";
} finally {
echo "Этот код выполнится в любом случае\n";
}


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 1
More from @easy_php_ru
  1. Oct 10, 2026🤔 Что такое агрегатные функции? Агрегатные функции в SQL и других языках обработки данных…
  2. Oct 9, 2026🤔 Как настроить autoload через Composer? Composer предоставляет механизм автоматической з…
  3. Oct 9, 2026🤔 Какое отличие у протоколов tcp и udp? Это два основных транспортных протокола в интерне…
  4. Oct 8, 2026🤔 Есть ли какое-то различие между одинарными и двойными кавычками? - В большинстве языков…
  5. Oct 7, 2026🤔 В каких случаях используют индексы? Индексы в базах данных используются для ускорения о…
  6. Oct 7, 2026🤔 В чем преимущество фасада? Фасад (Facade) в PHP — это паттерн проектирования, который у…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →