२०१ ९ के अनुसार यहाँ मैं ऊपर दिए गए उत्तरों से विस्तृत हूँ और अपवाद को संभालने के लिए गूज़ल डॉक्स , प्रतिक्रिया निकाय, स्थिति कोड, संदेश और कभी-कभी मूल्यवान प्रतिक्रिया आइटम प्राप्त करता हूं ।
try {
/**
* We use Guzzle to make an HTTP request somewhere in the
* following theMethodMayThrowException().
*/
$result = theMethodMayThrowException();
} catch (\GuzzleHttp\Exception\RequestException $e) {
/**
* Here we actually catch the instance of GuzzleHttp\Psr7\Response
* (find it in ./vendor/guzzlehttp/psr7/src/Response.php) with all
* its own and its 'Message' trait's methods. See more explanations below.
*
* So you can have: HTTP status code, message, headers and body.
* Just check the exception object has the response before.
*/
if ($e->hasResponse()) {
$response = $e->getResponse();
var_dump($response->getStatusCode()); // HTTP status code;
var_dump($response->getReasonPhrase()); // Response message;
var_dump((string) $response->getBody()); // Body, normally it is JSON;
var_dump(json_decode((string) $response->getBody())); // Body as the decoded JSON;
var_dump($response->getHeaders()); // Headers array;
var_dump($response->hasHeader('Content-Type')); // Is the header presented?
var_dump($response->getHeader('Content-Type')[0]); // Concrete header value;
}
}
// process $result etc. ...
देखा। आपको प्रतिक्रिया की जानकारी आसानी से अलग की गई वस्तुओं में मिलती है।
साइड नोट्स:
catch
क्लॉज के साथ हम इनहेरिटेंस चेन PHP रूट अपवाद क्लास \Exception
को पकड़ते हैं
क्योंकि गुज्जले कस्टम अपवाद इसे बढ़ाते हैं।
यह दृष्टिकोण उन मामलों के उपयोग के लिए उपयोगी हो सकता है, जहां गज़ल का उपयोग लारवेल या एडब्ल्यूएस एपीआई पीएचडी एसडीके जैसे हुड के तहत किया जाता है ताकि आप वास्तविक गज़ल अपवाद को पकड़ न सकें।
इस मामले में, अपवाद वर्ग गज़ल डॉक्स (उदाहरण GuzzleHttp\Exception\RequestException
के लिए मूल अपवाद के रूप में) में उल्लिखित नहीं हो सकता है ।
इसलिए आपको \Exception
इसके बजाय पकड़ना होगा लेकिन ध्यान रखें कि यह अभी भी गुज़ले अपवाद वर्ग का उदाहरण है।
हालांकि देखभाल के साथ उपयोग करें। उन आवरणों में गुज्झल $e->getResponse()
वस्तु के वास्तविक तरीके उपलब्ध नहीं हो सकते हैं। इस मामले में, आपको रैपर के वास्तविक अपवाद स्रोत कोड को देखना होगा और यह पता लगाना होगा कि गज़ल $response
के तरीकों का उपयोग करने के बजाय स्थिति, संदेश आदि कैसे प्राप्त करें ।
यदि आप सीधे अपने आप को गुज्झल कहते हैं, तो आप अपने उपयोग के मामले की शर्तों के संबंध GuzzleHttp\Exception\RequestException
में उनके अपवाद डॉक्स में किसी को भी पकड़ सकते हैं।