使用PHP程式碼實現百度文心一言API介面的錯誤處理與異常捕獲
百度文心一言API是一個非常受歡迎的短語生成接口,它可以隨機返回一句話,為我們提供了許多有趣的短語和名人名言。然而,當我們使用這個介面時,有時可能會遇到一些問題,例如請求逾時、回傳錯誤訊息等。為了提升使用者體驗,我們需要在程式碼中加入錯誤處理和異常捕獲的功能,增加程式的健全性和可靠性。
首先,我們需要使用cURL函數來傳送請求並取得介面的回傳值。為了方便後續的錯誤處理和異常捕獲,我們將這個過程封裝為一個函數:
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); } }
在上述程式碼中,我們使用了cURL函數發送一個GET請求,並設定了超時時間為5秒。如果請求成功(回傳碼為200),那麼我們將傳回的JSON資料解析成關聯數組,判斷code是否為200,如果是,傳回content欄位作為短語;否則,拋出一個自訂的例外,例外的訊息為介面傳回的錯誤訊息。
在我們的業務程式碼中,可以使用try-catch語句來擷取這個異常,並進行對應的錯誤處理:
try { $oneWord = getOneWord(); echo '今日一句:' . $oneWord; } catch (Exception $e) { echo '获取短语失败:' . $e->getMessage(); }
在上述程式碼中,我們呼叫getOneWord函數來取得一句短語,如果獲取成功,就輸出到頁面上;如果獲取失敗,就輸出一個錯誤訊息。
除了捕獲由Exception類別拋出的異常外,我們還可以自訂一些異常類,針對不同的錯誤進行不同的處理。例如,我們可以定義一個TimeoutException類,用來處理請求逾時的情況:
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); } }
在上述程式碼中,我們定義了一個TimeoutException類,繼承自Exception類,並重寫了__toString方法,用於傳回一個自訂的錯誤訊息。在getOneWord函數中,當請求逾時時拋出這個異常,然後在業務程式碼中捕獲這個異常並進行相應的處理。
透過上述的錯誤處理和異常捕獲的功能,我們可以更好地應對一些不可預見的情況,提升程序的穩定性和可靠性。在實際開發中,我們可以根據具體的需求,細化錯誤處理和異常捕獲的邏輯,提供更友善的錯誤資訊和恢復機制,以提供更好的使用者體驗。
以上是使用PHP程式碼實現百度文心一言API介面的錯誤處理與異常捕獲的詳細內容。更多資訊請關注PHP中文網其他相關文章!