Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menggunakan kod PHP untuk melaksanakan pengendalian ralat dan penangkapan pengecualian antara muka API Baidu Wenxinyiyan

Menggunakan kod PHP untuk melaksanakan pengendalian ralat dan penangkapan pengecualian antara muka API Baidu Wenxinyiyan

WBOY
WBOYasal
2023-08-26 18:13:501240semak imbas

Menggunakan kod PHP untuk melaksanakan pengendalian ralat dan penangkapan pengecualian antara muka API Baidu Wenxinyiyan

Gunakan kod PHP untuk melaksanakan pengendalian ralat dan penangkapan pengecualian antara muka API Baidu Wenxin Yiyan

API Baidu Wenxin Yiyan ialah antara muka penjanaan frasa yang sangat popular, yang boleh mengembalikan ayat secara rawak, memberikan kami banyak frasa lucu dan terkenal petikan. Walau bagaimanapun, apabila kami menggunakan antara muka ini, kadangkala kami mungkin menghadapi beberapa masalah, seperti tamat masa permintaan, maklumat ralat dikembalikan, dsb. Untuk meningkatkan pengalaman pengguna, kami perlu menambah pengendalian ralat dan fungsi penangkapan pengecualian pada kod untuk meningkatkan keteguhan dan kebolehpercayaan program.

Pertama, kita perlu menggunakan fungsi cURL untuk menghantar permintaan dan mendapatkan nilai pulangan antara muka. Untuk memudahkan pengendalian ralat dan penangkapan pengecualian seterusnya, kami merangkum proses ini ke dalam fungsi:

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);
    }
}

Dalam kod di atas, kami menggunakan fungsi cURL untuk menghantar permintaan GET dan menetapkan tamat masa kepada 5 saat. Jika permintaan itu berjaya (kod pulangan ialah 200), maka kami menghuraikan data JSON yang dikembalikan ke dalam tatasusunan bersekutu untuk menentukan sama ada kod tersebut ialah 200. Jika ya, kembalikan medan kandungan sebagai frasa jika tidak, buang pengecualian tersuai, pengecualian Maklumat tersebut ialah maklumat ralat yang dikembalikan oleh antara muka.

Dalam kod perniagaan kami, kami boleh menggunakan pernyataan cuba-tangkap untuk menangkap pengecualian ini dan melaksanakan pengendalian ralat yang sepadan:

try {
    $oneWord = getOneWord();
    echo '今日一句:' . $oneWord;
} catch (Exception $e) {
    echo '获取短语失败:' . $e->getMessage();
}

Dalam kod di atas, kami memanggil fungsi getOneWord untuk mendapatkan frasa Jika pemerolehan berjaya, ia akan dikeluarkan ke halaman; jika pemerolehan gagal, mesej ralat akan dikeluarkan.

Selain menangkap pengecualian yang dilemparkan oleh kelas Exception, kami juga boleh menyesuaikan beberapa kelas pengecualian untuk mengendalikan ralat yang berbeza secara berbeza. Contohnya, kita boleh mentakrifkan kelas TimeoutException untuk mengendalikan situasi tamat masa permintaan:

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);
    }
}

Dalam kod di atas, kami mentakrifkan kelas TimeoutException, mewarisi daripada kelas Exception dan mengatasi kaedah __toString untuk mengembalikan mesej ralat Ditakrifkan sendiri. Dalam fungsi getOneWord, pengecualian ini dilemparkan apabila permintaan tamat, dan kemudian pengecualian itu ditangkap dalam kod perniagaan dan diproses dengan sewajarnya.

Melalui pengendalian ralat dan fungsi penangkapan pengecualian di atas, kami boleh menangani beberapa situasi yang tidak dijangka dengan lebih baik dan meningkatkan kestabilan dan kebolehpercayaan program. Dalam pembangunan sebenar, kami boleh memperhalusi pengendalian ralat dan logik penangkapan pengecualian mengikut keperluan khusus, dan menyediakan maklumat ralat yang lebih mesra dan mekanisme pemulihan untuk memberikan pengalaman pengguna yang lebih baik.

Atas ialah kandungan terperinci Menggunakan kod PHP untuk melaksanakan pengendalian ralat dan penangkapan pengecualian antara muka API Baidu Wenxinyiyan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn