1.try catch peut intercepter les exceptions levées par la couche supérieure
2.finally est un bloc qui finira par être exécuté, que try ou catch ait un retour
3.try peut également être utilisé pour intercepter l'exception de lancement dans la classe de fonction de rappel call_user_func_array
4. call_user_func_array ne peut appeler que la méthode statique de la classe, et vous pouvez créer un nouvel objet dans cette méthode statique
5. Sans rien personnaliser Dans le cas des fonctions de gestion des erreurs, try ne peut pas capturer les erreurs dans PHP lui-même, y compris les erreurs d'avertissement et d'autres niveaux
Le code suivant fait partie du projet, qui a traversé plusieurs couches d'appels et de rappels
<?php class Oss { public static function connect() { throw new Exception("oss connect error"); return 'oss object'; } } //调用三层 class S3{ public static function connect() { //throw new Exception("s3 connect error"); return 's3 object'; } } //调用二层 function callReader($class,$url){ try{ $conn=call_user_func_array(array($class, "connect"),array()); return $conn; }catch(Exception $e){ throw $e; }finally{ //无论如何都会执行,在这记录日志 } } //调用一层 function getMessage(){ $conn=null; try { $conn=callReader('Oss',"http://xxxx"); } catch (Exception $e1) { $conn=callReader('S3',"http://xxxx"); } return $conn; } //最先的入口 try{ var_dump(getMessage()); }catch(Exception $e){}
[Recommandation du cours : Tutoriel vidéo PHP]
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!