Utilisation du code PHP pour implémenter la gestion des erreurs et la capture des exceptions de l'interface API Baidu Wenxin Yiyan

WBOY
Libérer: 2023-08-26 18:14:01
original
1263 Les gens l'ont consulté

Utilisation du code PHP pour implémenter la gestion des erreurs et la capture des exceptions de linterface 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);
    }
}
Copier après la connexion

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();
}
Copier après la connexion

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);
    }
}
Copier après la connexion

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!

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!