Skip to content

Commit 1619ddc

Browse files
authored
Update errorcontrol.xml Infostyle
1 parent aaeaefe commit 1619ddc

1 file changed

Lines changed: 31 additions & 31 deletions

File tree

language/operators/errorcontrol.xml

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,30 @@
55
<title>Оператор управления ошибками</title>
66
<titleabbrev>Управление ошибками</titleabbrev>
77
<simpara>
8-
PHP поддерживает один оператор управления ошибками: знак <literal>@</literal>.
9-
В случае если он предшествует какому-либо выражению в PHP-коде, любые
10-
сообщения об ошибках, генерируемые этим выражением, будут подавлены.
8+
PHP поддерживает один оператор управления ошибками: знак <literal>@</literal>,
9+
который указывают перед PHP-выражениями. Оператор подавит диагностическую ошибку,
10+
которое сгенерировало выражение.
1111
</simpara>
1212
<para>
13-
Если пользовательская функция обработчика ошибок установлена функцией
14-
<function>set_error_handler</function>, она всё равно будет вызываться,
15-
даже если диагностика была подавлена.
13+
Пользовательская функция обработчика ошибок, которую устанавливают функцией
14+
<function>set_error_handler</function>, вызывается,
15+
даже если диагностику подавили.
1616
</para>
1717
<warning>
1818
<para>
19-
До версии PHP 8.0.0 функция <function>error_reporting</function>,
20-
вызываемая внутри пользовательского обработчика ошибок,
21-
всегда возвращала <literal>0</literal>, если ошибка была подавлена оператором <literal>@</literal>.
22-
Начиная с PHP 8.0.0 она возвращает значение этого (побитового) выражения:
19+
До PHP 8.0.0 функция <function>error_reporting</function>
20+
при вызове внутри пользовательского обработчика ошибок
21+
возвращала для ошибок, которые подавили оператором <literal>@</literal>, значение <literal>0</literal>.
22+
Начиная с PHP 8.0.0 функция возвращает значение побитового выражения:
2323
<literal>E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE</literal>.
2424
</para>
2525
</warning>
2626
<simpara>
27-
Любое сообщение об ошибке, сгенерированное выражением,
28-
доступно в элементе массива с ключом <literal>«message»</literal>,
29-
возвращаемого функцией <function>error_get_last</function>.
30-
Результат этой функции будет меняться при каждой ошибке,
31-
поэтому его необходимо проверить заранее.
27+
Сообщение об ошибке, которое сгенерировало выражение,
28+
доступно в элементе с ключом <literal>"message"</literal> в массиве,
29+
который возвращает функция <function>error_get_last</function>.
30+
Результат функции изменяется при каждой ошибке,
31+
поэтому результат лучше проверить заранее.
3232
</simpara>
3333
<para>
3434
<informalexample>
@@ -38,37 +38,37 @@
3838
3939
/* Преднамеренная ошибка при работе с файлами */
4040
$my_file = @file ('non_existent_file') or
41-
die ("Ошибка при открытии файла: сообщение об ошибке было таким: '" . error_get_last()['message'] . "'");
41+
die ("При открытии файла возникла ошибка: '" . error_get_last()['message'] . "'");
4242
43-
// работает для любых выражений, а не только для функций
43+
// Работает с каждым выражением, а не только с функциями
4444
$value = @$cache[$key];
45-
// В случае если ключа $key нет, сообщение об ошибке (notice) не будет отображено
45+
// Уведомление не отобразится, если массив не содержит ключ $key
4646
4747
]]>
4848
</programlisting>
4949
</informalexample>
5050
</para>
5151
<note>
5252
<simpara>
53-
Оператор <literal>@</literal> работает только с
54-
<link linkend="language.expressions">выражениями</link>.
55-
Есть простое правило: если что-то возвращает значение,
56-
значит, можно указать перед ним оператор <literal>@</literal>.
57-
Например, можно указать оператор <literal>@</literal> перед
58-
именем переменной, произвольной функцией,
53+
Оператор <literal>@</literal> работает только
54+
<link linkend="language.expressions">с выражениями</link>.
55+
Простое эмпирическое правило: оператор <literal>@</literal> добавляют перед инструкциями,
56+
которые вычисляются как значение.
57+
Например, оператор <literal>@</literal> указывают
58+
перед названием переменной, произвольной функцией,
5959
вызовом выражения <function>include</function> и т. д.
60-
При этом нельзя указывать этот оператор
61-
перед определением функции или класса, условными конструкциями, например:
62-
<literal>if</literal>, &foreach; и т. д.
60+
При этом нельзя указывать оператор
61+
перед определением функции или класса, условными конструкциями наподобие
62+
<literal>if</literal>, &foreach; и других.
6363
</simpara>
6464
</note>
6565
<warning>
6666
<para>
67-
До PHP 8.0.0 оператор <literal>@</literal> мог подавлять критические ошибки,
67+
До PHP 8.0.0 оператор <literal>@</literal> подавлял критические ошибки,
6868
которые прерывали выполнение скрипта.
69-
Например, добавление оператора <literal>@</literal> к вызову несуществующей функции,
70-
когда она недоступна или вызвана с опечаткой,
71-
приведёт к прерыванию выполнения скрипта без указания причины.
69+
Скрипт завершал выполнение без указания причины,
70+
если оператор <literal>@</literal> указывали, например, перед вызовом функции,
71+
которую не определили, не импортировали или в названии которой допустили опечатку.
7272
</para>
7373
</warning>
7474
<sect2 role="seealso">

0 commit comments

Comments
 (0)