Maison > Article > développement back-end > Utilisation du code PHP pour implémenter la gestion des erreurs et la capture des exceptions de l'interface API Baidu Wenxin Yiyan
Utilisez le code PHP pour implémenter la gestion des erreurs et la capture des exceptions de l'interface API Baidu Wenxin Yiyan
L'API Baidu Wenxin Yiyan est une interface de génération de phrases très populaire, qui peut renvoyer une phrase de manière aléatoire, nous fournissant de nombreuses phrases amusantes et célèbres citations. Cependant, lorsque nous utilisons cette interface, nous pouvons parfois rencontrer certains problèmes, tels que l'expiration du délai de requête, les informations d'erreur renvoyées, etc. Afin d'améliorer l'expérience utilisateur, nous devons ajouter des fonctions de gestion des erreurs et de capture d'exceptions au code pour augmenter la robustesse et la fiabilité du programme.
Tout d'abord, nous devons utiliser la fonction cURL pour envoyer une requête et obtenir la valeur de retour de l'interface. Afin de faciliter la gestion ultérieure des erreurs et la capture des exceptions, nous encapsulons ce processus dans une fonction :
function getOneWord() { $url = 'https://v1.alapi.cn/api/word'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 5); $result = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($httpCode == 200) { $result = json_decode($result, true); if ($result['code'] == 200) { return $result['data']['content']; } else { throw new Exception($result['msg']); } } else { throw new Exception('Request failed: ' . $httpCode); } }
Dans le code ci-dessus, nous utilisons la fonction cURL pour envoyer une requête GET et définir le délai d'attente à 5 secondes. Si la requête réussit (le code retour est 200), nous analysons les données JSON renvoyées dans un tableau associatif pour déterminer si le code est 200. Si tel est le cas, renvoyez le champ de contenu sous forme de phrase, sinon, lancez une exception personnalisée, exception ; Les informations sont les informations d'erreur renvoyées par l'interface.
Dans notre code métier, nous pouvons utiliser l'instruction try-catch pour intercepter cette exception et effectuer la gestion des erreurs correspondante :
try { $oneWord = getOneWord(); echo '今日一句:' . $oneWord; } catch (Exception $e) { echo '获取短语失败:' . $e->getMessage(); }
Dans le code ci-dessus, nous appelons la fonction getOneWord pour obtenir une phrase si l'acquisition réussit. sera affiché sur la page ; si l'acquisition échoue, un message d'erreur est affiché.
En plus de détecter les exceptions levées par la classe Exception, nous pouvons également personnaliser certaines classes d'exception pour gérer différemment différentes erreurs. Par exemple, nous pouvons définir une classe TimeoutException pour gérer la situation d'expiration de la demande :
class TimeoutException extends Exception { public function __toString() { return '请求超时,请稍后重试。'; } } function getOneWord() { // ... if ($httpCode == 200) { // ... } else if ($httpCode == 28) { throw new TimeoutException(); } else { throw new Exception('Request failed: ' . $httpCode); } }
Dans le code ci-dessus, nous définissons une classe TimeoutException, héritons de la classe Exception et remplaçons la méthode __toString pour renvoyer un message d'erreur auto-défini. Dans la fonction getOneWord, cette exception est levée lorsque la demande expire, puis l'exception est capturée dans le code métier et traitée en conséquence.
Grâce aux fonctions de gestion des erreurs et de capture d'exceptions ci-dessus, nous pouvons mieux gérer certaines situations imprévues et améliorer la stabilité et la fiabilité du programme. Dans le développement réel, nous pouvons affiner la logique de gestion des erreurs et de capture des exceptions en fonction de besoins spécifiques, et fournir des informations sur les erreurs et des mécanismes de récupération plus conviviaux pour offrir une meilleure expérience utilisateur.
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!