[manuel php] gestion des exceptions

不言
Libérer: 2023-03-24 11:16:02
original
2312 Les gens l'ont consulté

Le contenu de cet article concerne la gestion des exceptions [php manual], qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

Gestion des exceptions

PHP 5

Les exceptions sont levées dans le bloc de code try et les exceptions sont interceptées dans le bloc de code catch

Chaque essai doit avoir au moins un bloc catch ou enfin correspondant.

L'objet lancé doit être une instance de la classe Exception ou une sous-classe d'Exception, sinon cela provoquera une erreur fatale PHP.

    try {      throw new Exception('异常提示语');      //throw 123;  //Fatal error: Uncaught Error: Can only throw objects 
      //throw new stdClass(); //Fatal error: Uncaught Error: Cannot throw objects that do not implement Throwable
    } catch (Exception $e) {      echo  $e->getMessage();
    }
Copier après la connexion

catch

Vous pouvez utiliser plusieurs blocs catch pour intercepter différentes catégories d'exceptions.

L'exécution normale (lorsqu'aucune exception n'est levée dans le bloc try) continuera après le dernier bloc catch défini dans la séquence.
Des exceptions peuvent être levées (ou relancées) dans des blocs catch.

Lorsqu'une exception est levée, le code suivant l'instruction ne sera pas exécuté et PHP tentera de trouver le premier bloc catch correspondant.

Si une exception n'est pas interceptée, une erreur fatale PHP sera émise avec le message "Uncaught Exception..." sauf si un gestionnaire est défini à l'aide de set_exception_handler().


finally

En PHP 5.5 et versions ultérieures, le bloc final peut également être spécifié après ou à la place du bloc catch.

Indépendamment du fait qu'une exception soit levée ou non, le code du bloc final s'exécutera toujours après les blocs try et catch avant la reprise de l'exécution normale.

Example #4 Exception handling with a finally block(用finally块处理异常)<?phpfunction inverse($x) {
    if (!$x) {        throw new Exception(&#39;pision by zero.&#39;);
    }    return 1/$x;
}try {    echo inverse(5) . "\n";
} catch (Exception $e) {    echo &#39;Caught exception: &#39;,  $e->getMessage(), "\n";
} finally {    echo "First finally.\n";
}try {    echo inverse(0) . "\n";
} catch (Exception $e) {    echo &#39;Caught exception: &#39;,  $e->getMessage(), "\n";
} finally {    echo "Second finally.\n";
}// Continue executionecho "Hello World\n";?>
Copier après la connexion

Example #5 Nested Exception (嵌套异常)<?phpclass MyException extends Exception { }class Test {
    public function testing() {
        try {            try {                throw new MyException(&#39;foo!&#39;);
            } catch (MyException $e) {                // rethrow it
                throw $e;
            }
        } catch (Exception $e) {
            var_dump($e->getMessage());
        }
    }
}$foo = new Test;$foo->testing();?>
Copier après la connexion

Note 
set_exception_handler()设置用户自定义的异常处理函数
Exception::getMessage 获取异常消息内容
Copier après la connexion
Recommandations associées :

[Classes et objets php] Sérialisation d'objets

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!