If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
तो पिछले topic में आपने program में आयी unwanted errors के बारे में पढ़ा और समझा , इस topic में हम Exceptions / Run Time Errors को handle करना सीखेंगे।
तो जैसा कि आपने पढ़ा ही है कि हम केवल Exceptions / Run Time Errors को ही handle कर सकते हैं , जिसके लिए try - catch
block का use किया जाता है।
try
block के अंदर हम अपना सारा code / logic लिखते हैं जिसमे exception आने के chances हैं , मतलब हम जो implementation code लिखेंगे वो try
block में ही होना चाहिए।
try को हमेशा catch
या finally के साथ use करते हैं। और catch
का use exception को handle करने के लिए करते हैं , इसे हमेशा try
block के साथ ही use करते हैं।
हम जानते हैं कि किसी number में 0 से divide नहीं कर सकते हैं , तो अगर हम ऐसा code बिना try catch
के लिखते हैं , तो कुछ इस तरह से error आती है।
echo 10/0;
// Fatal error : Uncaught DivisionByZeroError: Division by zero
Example में आप देख सकते हैं कि number को 0 से divide करने पर DivisionByZeroError
exception generate हुई है। अब जिस line में यह error आयी उससे आगे का code execute नहीं होगा चाहे 1000 lines code क्यों ही न लिखा हो।
इसलिए हमें इन Exceptions
को handle करना important हो जाता है।
●●●
ऊपर दिए गए program को नीचे example में try catch
के through exception handle लिया गया है।
try {
echo 10/0;
}
catch(DivisionByZeroError $e) {
echo "Caught exception : ". $e->getMessage();
}
Output
Caught exception : Division by zero
तो example में देखकर आप समझ गए होंगे कि कैसे किसी run time exception को कैसे handle करते हैं।
Well, हम जानते हैं कि किसी number को 0 से divide करने पर ArithmeticException आती है , इसलिए catch block में ArithmeticException class को use किया लेकिन आपको हर बार नहीं पता होगा कि आपके code में कौन सी error आएगी , ऐसे case में आप simply Error class का use कर सकते हैं।
For example
try {
echo 10/0;
}
catch(Error $e) {
echo "Caught exception : ". $e->getMessage();
}
ये code भी आपको same result देगा।
ऐसा इसलिए है क्योंकि सभी Run Time Error की classes Error class को ही Inherit करती है।
●●●
जब कोई runtime error आती है तो Error या इसकी corresponding sub class का एक object बनता है जिसमे error के बारे में information होती है।
try {
$result = 10 / 0;
}
catch (DivisionByZeroError $e) {
echo "Caught exception: " . $e->getMessage() . "<br>";
echo "Code: " . $e->getCode() . "<br>";
echo "File: " . $e->getFile() . "<br>";
echo "Line: " . $e->getLine() . "<br>";
echo "Trace as string: " . $e->getTraceAsString();
}
Output
Caught exception: Division by zero Code: 0 File: file_path.php Line: 3 Trace as string: #0 {main}
●●●
जरूरी नहीं है की आप किसी particular Error class का use करके ही exceptions को handle करें।
अगर आपको लगता है कि आपके try{ }
block अंदर लिखे गए code में एक से ज्यादा तरह की run time exceptions आ सकती है , तो आप एक साथ एक से ज्यादा catch()
block का use कर सकते हैं।
try {
$file = fopen("nonexistent_file.txt", "r");
if (!$file) {
throw new Exception("File not found.");
}
$data = fread($file, filesize("nonexistent_file.txt"));
fclose($file);
if ($data === false) {
throw new RuntimeException("Error reading data from file.");
}
}
catch (FileNotFoundException $e) {
echo "Caught FileNotFoundException: " . $e->getMessage();
}
catch (RuntimeException $e) {
echo "Caught RuntimeException: " . $e->getMessage();
}
catch (Exception $e) {
echo "Caught generic Exception: " . $e->getMessage();
}
catch (Error $e) {
echo "Error : " . $e->getMessage();
}
ऊपर दिए गए example में आप देख सकते हैं कि किस तरह से एक से ज्यादा catch() block का use अलग अलग errors को handle करने के लिए किया गया है।
हालाँकि Example में throw Statement का use भी किया गया है जो custom error generate करने के लिए use किया जाता है , इसके बारे में हम next topic में पढ़ेंगे।
●●●
I Hope, अब आपको PHP में try catch
का use करके exception handling अच्छे से समझ आ गया होगा।