php-doc-en/reference/errorfunc/functions/set-exception-handler.xml
Danack b95e76e41d
Types are not hints in PHP. (#1003)
As they are checked at run-time, type checking is enforced in PHP and not 'hinted'.

Co-authored-by: Kamil Tekiela <tekiela246@gmail.com>
2021-10-09 14:43:01 +01:00

127 lines
3.8 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<refentry xml:id="function.set-exception-handler" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>set_exception_handler</refname>
<refpurpose>
Sets a user-defined exception handler function
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>string</type><type>array</type><type>object</type><type>null</type></type><methodname>set_exception_handler</methodname>
<methodparam><type class="union"><type>callable</type><type>null</type></type><parameter>callback</parameter></methodparam>
</methodsynopsis>
<para>
Sets the default exception handler if an exception is not caught within a
try/catch block. Execution will stop after the
<parameter>callback</parameter> is called.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>callback</parameter></term>
<listitem>
<para>
Name of the function to be called when an uncaught exception occurs.
This handler function
needs to accept one parameter, which will be the exception object that
was thrown. This is the handler signature before PHP 7:
</para>
<para>
<methodsynopsis>
<type>void</type><methodname><replaceable>handler</replaceable></methodname>
<methodparam><type>Exception</type><parameter>ex</parameter></methodparam>
</methodsynopsis>
</para>
<para>
Since PHP 7, most errors are reported by throwing <classname>Error</classname>
exceptions, which will be caught by the handler as well. Both <classname>Error</classname>
and <classname>Exception</classname> implements the <classname>Throwable</classname> interface.
This is the handler signature since PHP 7:
</para>
<para>
<methodsynopsis>
<type>void</type><methodname><replaceable>handler</replaceable></methodname>
<methodparam><type>Throwable</type><parameter>ex</parameter></methodparam>
</methodsynopsis>
</para>
<para>
&null; may be passed instead, to reset this handler to its default state.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Returns the previously defined exception handler, or &null; on error. If
no previous handler was defined, &null; is also returned.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>set_exception_handler</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
function exception_handler($exception) {
echo "Uncaught exception: " , $exception->getMessage(), "\n";
}
set_exception_handler('exception_handler');
throw new Exception('Uncaught Exception');
echo "Not Executed\n";
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso"><!-- {{{ -->
&reftitle.seealso;
<para>
<simplelist>
<member><function>restore_exception_handler</function></member>
<member><function>restore_error_handler</function></member>
<member><function>error_reporting</function></member>
<member><link linkend="language.exceptions">PHP 5 Exceptions</link></member>
</simplelist>
</para>
</refsect1><!-- }}} -->
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->