Оператори управління помилками PHP

Матеріал з Вікі ЦДУ
Версія від 08:20, 7 травня 2010; Куделькін Влад (обговореннявнесок)

(різн.) ← Попередня версія • Поточна версія (різн.) • Новіша версія → (різн.)
Перейти до: навігація, пошук

PHP підтримує один оператор управління помилками: знак @. У разі, якщо він передує будь-якому вираженню в PHP-коді, будь-які повідомлення про помилки, що генеруються цим виразом, будуть проігноровані.

У разі, якщо встановлена опція track_errors, всі генеруються повідомлення про помилки будуть зберігатися у змінній $ php_errormsg. Ця змінна буде перезаписуватися при виникненні кожної нової помилки, тому у разі потреби перевіряйте її відразу ж.

<?php
// Преднамеренная ошибка при работе с файлами
$my_file = @file ('non_existent_file') or
    die ("Failed opening file: error was '$php_errormsg'");
// работает для любых выражений, а не только для функций
$value = @$cache[$key]; 
// В случае если ключа $key нет, сообщение об ошибке не будет отображено
?>

Увага: Оператор @ працює тільки з виразами. Є просте правило: якщо довільна мовна конструкція повертає значення, значить ви можете використовувати попередній їй оператор @. Наприклад, ви можете використовувати @ перед іменем змінної, довільної функцією або викликом включати (), константою і так далі. У той же час ви не можете використовувати цей оператор перед визначенням функції або класу, умовними конструкціями, такими як, якщо або Еогеасп.

Увага: Оператор @ не пригнічує висновок помилок, що виникають на стадії синтаксичного розбору скрипта.

На сьогоднішній день оператор @ пригнічує висновок повідомлень навіть про критичні помилки переривати роботу скрипта. Крім усього іншого, це означає, що якщо ви використовували @ для придушення помилок, що виникають при роботі будь-якої функції, у випадку якщо вона недоступна або написана неправильно, подальша робота скрипта буде зупинена без будь-яких повідомлень.


Оператори мови PHP