svn: /phpdoc/fr/trunk/language/ exceptions.xml
[email protected] (George Peter Banyard)
| Newsgroups | php.doc.fr |
|---|---|
| Message-ID | <[email protected]> |
girgias Thu, 26 Nov 2020 20:21:33 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=351683
Log:
Sync Exception page with EN revision
Changed paths:
U phpdoc/fr/trunk/language/exceptions.xml
Modified: phpdoc/fr/trunk/language/exceptions.xml
===================================================================
--- phpdoc/fr/trunk/language/exceptions.xml 2020-11-26 20:03:24 UTC (rev 351682)
+++ phpdoc/fr/trunk/language/exceptions.xml 2020-11-26 20:21:33 UTC (rev 351683)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
-<!-- EN-Revision: 351112 Maintainer: yannick Status: ready -->
+<!-- EN-Revision: 351652 Maintainer: yannick Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="language.exceptions" xmlns="http://docbook.org/ns/docbook">
@@ -200,21 +200,43 @@
</para>
<para>
+ Si une exception est lancé et que la porté courante de la fonction n'as pas
+ de block &catch;, l'exception "remontera" la pile d'appel de la fonction appelante
+ jusqu'à trouver un bloc &catch; correspondant. Tous les blocs &finally; rencontrer
+ seront exécuté. Si la pile d'appel est déroulé jusqu'à la portée globale sans
+ rencontrer de bloc &catch; correspondant, le programme sera terminé avec
+ une erreur fatale sauf si un gestionnaire globale d'exception a été définie.
+ </para>
+ <para>
L'objet lancé doit être une instance de la classe
<classname>Exception</classname> ou d'une sous-classe de la classe
<classname>Exception</classname>. Tenter de lancer un objet qui ne
correspond pas à cela résultera en une erreur fatale émise par PHP.
</para>
+ <para>
+ À partir de PHP 8.0.0, le mot clé &throw; est une expression et peut être
+ utilisé dans n'importe quel contexte d'expressions. Dans les versions
+ antérieures c'était une déclaration et devait être sur sa propre ligne.
+ </para>
</simplesect>
<simplesect xml:id="language.exceptions.catch">
<title><literal>catch</literal></title>
<para>
+ Un bloc &catch; définie comment réagir à une exception qui a été lancé.
+ Un bloc &catch; définit un ou plusieurs type d'exception ou erreur qu'il peut
+ gérer, et optionellement une variable dans laquelle assigner l'exception.
+ (Cette variable était requis antérieur à PHP 8.0.0)
+ Le premier bloc &catch; qu'une exception our erreur lancé qui correspond au
+ type de l'objet lancé gérera l'objet.
+ </para>
+ <para>
Plusieurs blocs &catch; peuvent être utilisés pour attraper différentes
classes d'exceptions. L'exécution normale (lorsqu'aucune exception n'est lancée
dans le bloc &try;) continue après le dernier
bloc &catch; défini dans la séquence. Les exceptions
- peuvent être lancées (ou relancées) dans un bloc &catch;.
+ peuvent être &throw; (lancé) (ou relancées) dans un bloc &catch;. Sinon,
+ l'exécution continuera après le bloc &catch; qui a été déclanché.
</para>
<para>
Lorsqu'une exception est lancée, le code suivant le traitement ne sera pas
@@ -226,11 +248,16 @@
<function>set_exception_handler</function>.
</para>
<para>
- Depuis PHP 7.1, un block &catch; peut spécifier plusieurs exceptions à
+ À partir de PHP 7.1, un block &catch; peut spécifier plusieurs exceptions à
l'aide du caratère pipe (<literal>|</literal>). Ceci est utile lorsque
différentes exceptions de hiérarchies de classes différentes sont traitées
de la même manière.
</para>
+ <para>
+ À partir de PHP 8.0.0, le nom de variable pour l'exception attrapé est
+ optionnel. Si non spécifié, le bloc &catch; sera toujours exécuté mais
+ n'aura pas accès à l'objet lancé.
+ </para>
</simplesect>
<simplesect xml:id="language.exceptions.finally">
@@ -254,6 +281,19 @@
</para>
</simplesect>
+ <simplesect xml:id="language.exceptions.exception-handler">
+ <title><literal>Global exception handler</literal></title>
+ <para>
+ Si une exception est autorisé à remonter jusqu'à la portée globale, elle peut
+ être attrapée par un gestionnaire d'exception global si définie. La fonction
+ <function>set_exception_handler</function> peut définir une fonction qui sera
+ appellée à la place d'un block &catch; si aucun autre block n'est invoqué.
+ L'effet est essentiellement identique à entourer le programme entier dans un
+ block &tryy;-&catch; avec cette fonction en tant que &catch;.
+ </para>
+ </simplesect>
+
+
<simplesect xml:id="language.exceptions.notes">
&reftitle.notes;
@@ -264,7 +304,22 @@
<link linkend="language.oop5">orientées objet</link>
utilisent les exceptions. Quoiqu'il en soit, des erreurs peuvent facilement être traduites en
exceptions avec <link linkend="class.errorexception">ErrorException</link>.
+ Cependant, cette technique ne fonctionne que pour les erreurs non fatales.
</para>
+ <example>
+ <title>Cenvertir l'error reporting en exceptions</title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+function exceptions_error_handler($severity, $message, $filename, $lineno) {
+ throw new ErrorException($message, 0, $severity, $filename, $lineno);
+}
+
+set_error_handler('exceptions_error_handler');
+?>
+]]>
+ </programlisting>
+ </example>
</note>
<tip>
<para>
@@ -450,6 +505,50 @@
]]>
</screen>
</example>
+ <example>
+ <title>Omettre la variable attrapé</title>
+ <para>Seulement permit dans PHP 8.0.0 et ultérieur.</para>
+ <programlisting role="php">
+<![CDATA[
+<?php
+
+class SpecificException extends Exception {}
+
+function test() {
+ throw new SpecificException('Oopsie');
+}
+
+try {
+ test();
+} catch (SpecificException) {
+ print "A SpecificException was thrown, but we don't care about the details.";
+}
+?>
+]]>
+ </programlisting>
+ </example>
+ <example>
+ <title>Throw en tant qu'expression</title>
+ <para>Seulement permit dans PHP 8.0.0 et ultérieur.</para>
+ <programlisting role="php">
+<![CDATA[
+<?php
+
+class SpecificException extends Exception {}
+
+function test() {
+ do_something_risky() or throw new Exception('It did not work');
+}
+
+try {
+ test();
+} catch (Exception $e) {
+ print $e->getMessage();
+}
+?>
+]]>
+ </programlisting>
+ </example>
</simplesect>
</chapter>