Maison > Article > développement back-end > [manuel php] gestion des exceptions
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 5Les exceptions sont levées dans le bloc de code try et les exceptions sont interceptées dans le bloc de code catchChaque 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(); }
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.
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('pision by zero.'); } return 1/$x; }try { echo inverse(5) . "\n"; } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; } finally { echo "First finally.\n"; }try { echo inverse(0) . "\n"; } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; } finally { echo "Second finally.\n"; }// Continue executionecho "Hello World\n";?>
Example #5 Nested Exception (嵌套异常)<?phpclass MyException extends Exception { }class Test { public function testing() { try { try { throw new MyException('foo!'); } catch (MyException $e) { // rethrow it throw $e; } } catch (Exception $e) { var_dump($e->getMessage()); } } }$foo = new Test;$foo->testing();?>
Note set_exception_handler()设置用户自定义的异常处理函数 Exception::getMessage 获取异常消息内容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!