From 5e0f3eb8fc7e844da3389feeae82fd3e2f3a9891 Mon Sep 17 00:00:00 2001 From: Mikhail Alferov Date: Sat, 26 Apr 2025 03:33:22 +0300 Subject: [PATCH 1/7] Create get-error-handler.xml --- .../errorfunc/functions/get-error-handler.xml | 126 ++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 reference/errorfunc/functions/get-error-handler.xml diff --git a/reference/errorfunc/functions/get-error-handler.xml b/reference/errorfunc/functions/get-error-handler.xml new file mode 100644 index 0000000000..075f864ad9 --- /dev/null +++ b/reference/errorfunc/functions/get-error-handler.xml @@ -0,0 +1,126 @@ + + + + + + get_error_handler + Получает пользовательскую функцию обработчика ошибок + + + + &reftitle.description; + + callablenullget_error_handler + + + + Функция возвращает текущую функцию обработчика ошибок, если такую функцию определили. + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + Функция возвращает текущий обработчик ошибок, если такой определили в коде, + или значение &null;, если за текущую обработку ошибок отвечает встроенная функция. + + + Функция возвращает непосредственно ту callback-функцию, которую передали в функцию + set_error_handler, когда устанавливали пользовательский обработчик. + + + + + &reftitle.examples; + + + Пример получения пользовательского обработчика ошибок функцией <function>get_error_handler</function> + + +]]> + + + + + + + &reftitle.notes; + + + До PHP 8.5.0 действие функции заменяет следующий + полифил: + + + + +]]> + + + + + + + &reftitle.seealso; + + + error_reporting + set_error_handler + restore_error_handler + trigger_error + Константы уровней ошибок + + + + + From 5a3e2803ba3ef1d69e6415efbccaa2809d06b867 Mon Sep 17 00:00:00 2001 From: Mikhail Alferov Date: Sat, 26 Apr 2025 03:36:58 +0300 Subject: [PATCH 2/7] =?UTF-8?q?get-error-handler.xml=20=D0=94=D0=BE=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B2=D0=B5=D0=BB=20=D1=81=D0=BB=D0=BE=D0=B2?= =?UTF-8?q?=D0=BE=20=D0=B2=20=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D1=80=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- reference/errorfunc/functions/get-error-handler.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reference/errorfunc/functions/get-error-handler.xml b/reference/errorfunc/functions/get-error-handler.xml index 075f864ad9..3e11f52d89 100644 --- a/reference/errorfunc/functions/get-error-handler.xml +++ b/reference/errorfunc/functions/get-error-handler.xml @@ -45,7 +45,7 @@ Date: Sat, 26 Apr 2025 03:38:18 +0300 Subject: [PATCH 3/7] Create get-exception-handler.xml --- .../functions/get-exception-handler.xml | 126 ++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 reference/errorfunc/functions/get-exception-handler.xml diff --git a/reference/errorfunc/functions/get-exception-handler.xml b/reference/errorfunc/functions/get-exception-handler.xml new file mode 100644 index 0000000000..3f84e72a9f --- /dev/null +++ b/reference/errorfunc/functions/get-exception-handler.xml @@ -0,0 +1,126 @@ + + + + + + get_exception_handler + Получает пользовательскую функцию обработчика исключений + + + + &reftitle.description; + + callablenullget_exception_handler + + + + Функция возвращает текущую функцию обработчика исключений, если такую функцию определили. + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + Функция возвращает текущий обработчик исключений, если такой определили в коде, + или значение &null;, если за текущую обработку исключений отвечает встроенная функция. + + + Функция возвращает непосредственно ту callback-функцию, которую передали в функцию + set_exception_handler, когда устанавливали пользовательский обработчик. + + + + + &reftitle.examples; + + + Пример получения пользовательского обработчика исключений функцией <function>get_exception_handler</function> + +getMessage() . "\n"; +}; + +var_dump(get_exception_handler()); // NULL + +set_exception_handler($handler); + +var_dump(get_exception_handler() === $handler); // bool(true) + +?> +]]> + + + + + + + &reftitle.notes; + + + До PHP 8.5.0 действие функции заменяет следующий + полифил: + + + + +]]> + + + + + + + &reftitle.seealso; + + + set_exception_handler + restore_exception_handler + restore_error_handler + error_reporting + Исключения + + + + + From 20f0b15859084089a5b5e648f731ede0aeb32b6b Mon Sep 17 00:00:00 2001 From: Mikhail Alferov Date: Sat, 26 Apr 2025 03:51:13 +0300 Subject: [PATCH 4/7] Update restore-error-handler.xml to en --- .../functions/restore-error-handler.xml | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/reference/errorfunc/functions/restore-error-handler.xml b/reference/errorfunc/functions/restore-error-handler.xml index 8e425f95b0..5805631911 100644 --- a/reference/errorfunc/functions/restore-error-handler.xml +++ b/reference/errorfunc/functions/restore-error-handler.xml @@ -1,11 +1,11 @@ - + restore_error_handler - Восстанавливает предыдущий обработчик ошибок + Восстанавливает предыдущую функцию обработчика ошибок @@ -16,10 +16,10 @@ - Используется после смены обработчика ошибок функцией - set_error_handler, чтобы вернуть предыдущий обработчик - (который может быть как встроенной функцией, так и определённой - пользователем). + Функцию вызывают после изменения обработчика ошибок функцией + set_error_handler, чтобы вернуться к предыдущему обработчику, + которым станет или пользовательская функция обработки ошибок, если такую определили, + или встроенный обработчик. @@ -39,31 +39,33 @@ &reftitle.examples; - Пример использования <function>restore_error_handler</function> + Пример возврата к предыдущему обработчику ошибок функцией <function>restore_error_handler</function> - Определение, произошла ли ошибка в функции - unserialize, а затем восстановление исходного - обработчика ошибок. + Пример определяет, вызвала ли ошибку функция + unserialize, а затем восстанавливает исходный + обработчик ошибок. ]]> &example.outputs; @@ -76,6 +78,7 @@ restore_error_handler(); error_reporting set_error_handler + get_error_handler restore_exception_handler trigger_error From ed3819dc5e9859cbf5e1fbdde7824f5dae6f3eee Mon Sep 17 00:00:00 2001 From: Mikhail Alferov Date: Sat, 26 Apr 2025 03:55:05 +0300 Subject: [PATCH 5/7] =?UTF-8?q?restore-error-handler.xml=20=D0=B8=D1=81?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=84=D0=BE=D1=80=D0=BC?= =?UTF-8?q?=D1=83=D0=BB=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- reference/errorfunc/functions/restore-error-handler.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reference/errorfunc/functions/restore-error-handler.xml b/reference/errorfunc/functions/restore-error-handler.xml index 5805631911..3fdd055e6a 100644 --- a/reference/errorfunc/functions/restore-error-handler.xml +++ b/reference/errorfunc/functions/restore-error-handler.xml @@ -39,7 +39,7 @@ &reftitle.examples; - Пример возврата к предыдущему обработчику ошибок функцией <function>restore_error_handler</function> + Пример восстановления предыдущего обработчика ошибок функцией <function>restore_error_handler</function> Пример определяет, вызвала ли ошибку функция unserialize, а затем восстанавливает исходный From fa0db12d232471707fee93f6016ba75b0e767c36 Mon Sep 17 00:00:00 2001 From: Mikhail Alferov Date: Sat, 26 Apr 2025 04:02:37 +0300 Subject: [PATCH 6/7] Update restore-exception-handler.xml to en --- .../functions/restore-exception-handler.xml | 43 ++++++++++--------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/reference/errorfunc/functions/restore-exception-handler.xml b/reference/errorfunc/functions/restore-exception-handler.xml index 7149cd5ff4..dbc1461ffc 100644 --- a/reference/errorfunc/functions/restore-exception-handler.xml +++ b/reference/errorfunc/functions/restore-exception-handler.xml @@ -1,11 +1,11 @@ - + restore_exception_handler - Восстанавливает предыдущий обработчик исключений + Восстанавливает предыдущую функцию обработчика исключений @@ -16,10 +16,10 @@ - Используется после смены обработчика исключений функцией - set_exception_handler, чтобы вернуть предыдущий - обработчик (который может быть как встроенной функцией, так и определённой - пользователем). + Функцию вызывают после изменения обработчика исключений функцией + set_exception_handler, чтобы вернуться к предыдущему обработчику, + которым станет или пользовательская функция обработки исключений, если такую определили, + или встроенный обработчик. @@ -40,34 +40,36 @@ - Пример использования <function>restore_exception_handler</function> + Пример восстановления предыдущего обработчика исключений функцией <function>restore_exception_handler</function> getMessage(); - } - function exception_handler_2(Exception $e) - { - echo '[' . __FUNCTION__ . '] ' . $e->getMessage(); - } +function exception_handler_1(Exception $e) +{ + echo '[' . __FUNCTION__ . '] ' . $e->getMessage(); +} - set_exception_handler('exception_handler_1'); - set_exception_handler('exception_handler_2'); +function exception_handler_2(Exception $e) +{ + echo '[' . __FUNCTION__ . '] ' . $e->getMessage(); +} - restore_exception_handler(); +set_exception_handler('exception_handler_1'); +set_exception_handler('exception_handler_2'); + +restore_exception_handler(); + +throw new Exception('Эта инструкция запустит первый обработчик исключений...'); - throw new Exception('Вызван первый обработчик исключений...'); ?> ]]> &example.outputs; @@ -79,6 +81,7 @@ set_exception_handler + get_exception_handler set_error_handler restore_error_handler error_reporting From 2bc1ee8dd48822a2f4c24f6b9d47c05a4b14ad00 Mon Sep 17 00:00:00 2001 From: Mikhail Alferov Date: Sat, 26 Apr 2025 06:34:11 +0300 Subject: [PATCH 7/7] Update set-exception-handler.xml to en --- .../functions/set-exception-handler.xml | 40 ++++++++++--------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/reference/errorfunc/functions/set-exception-handler.xml b/reference/errorfunc/functions/set-exception-handler.xml index 4120498e6a..18fe18d5fd 100644 --- a/reference/errorfunc/functions/set-exception-handler.xml +++ b/reference/errorfunc/functions/set-exception-handler.xml @@ -1,11 +1,11 @@ - + set_exception_handler - Задаёт пользовательский обработчик исключений + Устанавливает пользовательскую функцию обработчика исключений @@ -16,9 +16,9 @@ callablenullcallback - Задаёт обработчик по умолчанию для случаев, когда исключение выброшено - вне блока try/catch. После вызова callback - выполнение будет остановлено. + Функция устанавливает пользовательскую функцию как обработчик исключений по умолчанию + для перехвата исключений, которые не отловили в блоке try-catch. Выполнение скрипта остановится + после вызова callback-функции. @@ -30,11 +30,11 @@ callback - Функция, вызываемая при возникновении неперехваченного исключения. - Эта функция-обработчик должна принимать один параметр, которым будет - объект выброшенного исключения Throwable. - И Error и Exception - реализуют интерфейс Throwable. + Функция, которую требуется вызвать, когда возникнет неперехваченное исключение. + В функции-обработчике определяют один параметр с типом Throwable, + в который придёт объект выброшенного исключения — + Error или Exception, + которые реализуют интерфейс Throwable. Сигнатура обработчика: @@ -44,8 +44,8 @@ - В качестве этого аргумента можно передать &null;. В этом случае - обработчик вернётся к своему изначальному состоянию. + При передаче вместо callback-функции значения &null; пользовательский обработчик + исключений сбрасывается на встроенный обработчик. @@ -56,9 +56,9 @@ &reftitle.returnvalues; - Возвращает ранее определённый обработчик исключений или &null; в случае - ошибки. Если предыдущих обработчиков определено не было, то также - возвращается &null;. + Функция возвращает предыдущий обработчик исключений или &null;, + если возникла ошибка. Функция также возвращает &null;, + если предыдущий обработчик не определили. @@ -67,19 +67,22 @@ - Пример использования <function>set_exception_handler</function> + Пример установки пользовательского обработчика исключений функцией <function>set_exception_handler</function> getMessage(), "\n"; } set_exception_handler('exception_handler'); throw new Exception('Неперехваченное исключение'); -echo "Не выполнено\n"; +echo "Не выполняется\n"; + ?> ]]> @@ -91,6 +94,7 @@ echo "Не выполнено\n"; &reftitle.seealso; + get_exception_handler restore_exception_handler restore_error_handler error_reporting