परिचय: त्रुटि प्रबंधन क्यों विश्वसनीय PHP कोड की नींव है
प्रत्येक PHP डेवलपर को त्रुटियों का सामना करना पड़ता है। चाहे वह गलत उपयोगकर्ता इनपुट हो, अनुपलब्ध डेटाबेस हो, या API की अप्रत्याशित विफलता हो — उचित त्रुटि प्रबंधन के बिना, एप्लिकेशन एक नाजुक संरचना में बदल जाता है जो किसी भी क्षण "गिर" सकता है। PHP में त्रुटि प्रबंधन केवल सफेद स्क्रीन ऑफ डेथ (WSOD) से बचने का तरीका नहीं है, बल्कि स्थिर, सुरक्षित और रखरखाव योग्य वेब एप्लिकेशन बनाने का एक मूलभूत सिद्धांत है।
इस लेख में, हम PHP में त्रुटि प्रबंधन के सभी पहलुओं को कवर करेंगे: बुनियादी try/catch तंत्र से लेकर कस्टम अपवाद बनाने और उन्नत लॉगिंग रणनीतियों तक। आप सीखेंगे कि त्रुटियों की अराजकता को एक प्रबंधनीय और पूर्वानुमानित प्रक्रिया में कैसे बदला जाए।
मूल बातें: try, catch, finally और throw
try/catch ब्लॉक — रक्षा की पहली पंक्ति
PHP में अपवाद तंत्र try/catch संरचना पर आधारित है। जो कोड त्रुटि उत्पन्न कर सकता है, उसे try ब्लॉक में रखा जाता है। यदि इसमें कोई अपवाद होता है, तो निष्पादन तुरंत catch ब्लॉक में चला जाता है, जहाँ त्रुटि को संभाला जाता है।
<?phptry { $file = fopen('important_data.txt', 'r'); if (!$file) { throw new Exception('फ़ाइल खोलने में विफल'); } // फ़ाइल के साथ काम करना fclose($file);} catch (Exception $e) { echo 'त्रुटि: ' . $e->getMessage();}?>यह समझना महत्वपूर्ण है: PHP में सभी त्रुटियाँ अपवाद नहीं हैं। मानक चेतावनियाँ (warning) और सूचनाएँ (notice) स्वचालित रूप से अपवाद उत्पन्न नहीं करती हैं। उन्हें पकड़ने के लिए विशेष कॉन्फ़िगरेशन की आवश्यकता होती है (अनुभाग "उन्नत तकनीकें" देखें)।
finally ब्लॉक — गारंटीकृत निष्पादन
finally ब्लॉक हमेशा निष्पादित होता है, चाहे अपवाद फेंका गया हो या नहीं। यह संसाधनों को मुक्त करने के लिए आदर्श स्थान है: फ़ाइलों को बंद करना, DB कनेक्शन या मेमोरी को मुक्त करना।
<?phpfunction processData($data) { $connection = null; try { $connection = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass'); // क्वेरी निष्पादित करना return $connection->query($data); } catch (PDOException $e) { // त्रुटि लॉग करें error_log('DB Error: ' . $e->getMessage()); return false; } finally { // किसी भी स्थिति में कनेक्शन बंद करें if ($connection) { $connection = null; } }}?>throw ऑपरेटर — अपने स्वयं के अपवाद बनाना
throw की सहायता से आप कोड में किसी भी बिंदु पर अपवाद उत्पन्न कर सकते हैं। यह आपको त्रुटियों के स्पष्ट और पूर्वानुमानित परिदृश्य बनाने की अनुमति देता है।
<?phpfunction validateAge($age) { if (!is_numeric($age)) { throw new InvalidArgumentException('आयु एक संख्या होनी चाहिए'); } if ($age < 0 || $age > 150) { throw new OutOfRangeException('आयु स्वीकार्य सीमा से बाहर है'); } return true;}
try { validateAge('abc');} catch (InvalidArgumentException $e) { echo 'सत्यापन त्रुटि: ' . $e->getMessage();} catch (OutOfRangeException $e) { echo 'गलत सीमा: ' . $e->getMessage();}?>कस्टम अपवाद वर्ग
मानक अपवाद वर्ग (Exception, RuntimeException, InvalidArgumentException) कई परिदृश्यों को कवर करते हैं, लेकिन जटिल परियोजनाओं के लिए अपनी स्वयं की अपवाद पदानुक्रम बनाना बेहतर होता है। इससे कोड की पठनीयता में सुधार होता है और डिबगिंग सरल हो जाती है।
अपना स्वयं का अपवाद वर्ग बनाना
<?phpclass DatabaseException extends Exception { private $queryString; public function __construct($message, $query = '', $code = 0, Throwable $previous = null) { $this->queryString = $query; parent::__construct($m
```