-
Notifications
You must be signed in to change notification settings - Fork 58
/
Copy pathset-exception-handler.xml
169 lines (159 loc) · 5.1 KB
/
set-exception-handler.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: e41806c30bf6975e452c0d4ce35ab0984c2fa68c Maintainer: seros Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.set-exception-handler" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>set_exception_handler</refname>
<refpurpose>
Establece una función de gestión de excepciones definida por el usuario
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>callable</type><methodname>set_exception_handler</methodname>
<methodparam><type>callable</type><parameter>exception_handler</parameter></methodparam>
</methodsynopsis>
<para>
Establece el manejador de excepciones predeterminado si una excepción no es capturada dentro de un
bloque try/catch. La ejecución se detendrá después de la
llamada a <parameter>exception_handler</parameter>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>exception_handler</parameter></term>
<listitem>
<para>
Nombre de la función a llamar cuando ocurra una excepción no capturada.
Es necesario que esta función de gestión
acepte un parámetro, que será el objeto de excepción que
fue lanzado. Esta es la firma del manejador:
</para>
<para>
<methodsynopsis>
<type>void</type><methodname><replaceable>handler</replaceable></methodname>
<methodparam><type>Exception</type><parameter>ex</parameter></methodparam>
</methodsynopsis>
</para>
<para>
Desde PHP 7, la mayoría de los errores se notifican lanzando excepciones
<classname>Error</classname>, las cuales serán también capturadas por el manejador. <classname>Error</classname>
y <classname>Exception</classname> implementan la interfaz <classname>Throwable</classname>.
Esta es la signatura del manejador desde PHP 7:
</para>
<para>
<methodsynopsis>
<type>void</type><methodname><replaceable>handler</replaceable></methodname>
<methodparam><type>Throwable</type><parameter>ex</parameter></methodparam>
</methodsynopsis>
</para>
<para>
Se podría pasar &null; en su lugar para reiniciar este manejador a su estado predeterminado.
</para>
<caution>
<para>
Observe que al proporcionar una <classname>Exception</classname> explícita como
tipo implicado al parámetro <parameter>ex</parameter> en una retrollamada causará
problemas con la jerarquía de excepciones cambiada en PHP 7.
</para>
</caution>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Devuelve el nombre del manejador de excepciones definido anteriormente, o &null; en caso de error. Si
no se definió un manejador anterior también devolverá &null;.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>7.0.0</entry>
<entry>
Cambiado el tipo de parámetro pasado a <parameter>exception_handler</parameter>
de <classname>Exception</classname> a <classname>Throwable</classname>
</entry>
</row>
<row>
<entry>5.5.0</entry>
<entry>
Anteriormente, si se pasaba &null;, esta función devolvía &true;.
Devuelve el manejador anterior desde PHP 5.5.0.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Ejemplo de <function>set_exception_handler</function></title>
<programlisting role="php">
<![CDATA[
<?php
function manejador_excepciones($excepción) {
echo "Excepción no capturada: " , $excepción->getMessage(), "\n";
}
set_exception_handler('manejador_excepciones');
throw new Exception('Excepción No Capturada');
echo "No Ejecutado\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">Excepciones de PHP 5</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
-->