PHP try-catch In Hindi | try catch In PHP In Hindi


तो पिछले topic में आपने program में आयी unwanted errors के बारे में पढ़ा और समझा , इस topic में हम Exceptions / Run Time Errors को handle करना सीखेंगे।

तो जैसा कि आपने पढ़ा ही है कि हम केवल Exceptions / Run Time Errors को ही handle कर सकते हैं , जिसके लिए try - catch block का use किया जाता है।

PHP try-catch

try block के अंदर हम अपना सारा code / logic लिखते हैं जिसमे exception आने के chances हैं , मतलब हम जो implementation code लिखेंगे वो try block में ही होना चाहिए।

try को हमेशा catch या finally के साथ use करते हैं। और catch का use exception को handle करने के लिए करते हैं , इसे हमेशा try block के साथ ही use करते हैं।

Without try catch

हम जानते हैं कि किसी 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 हो जाता है।

PHP Exception Handling Example

ऊपर दिए गए 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 करती है।

PHP Error object

जब कोई 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}

PHP multiple catch blocks

जरूरी नहीं है की आप किसी particular Error class का use करके ही exceptions को handle करें।

अगर आपको लगता है कि आपके try{ } block अंदर लिखे गए code में एक से ज्यादा तरह की run time exceptions आ सकती है , तो आप एक साथ एक से ज्यादा catch() block का use कर सकते हैं।

PHP multiple catch example

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 अच्छे से समझ आ गया होगा।

Hey ! I'm Rahul founder of learnhindituts.com. Working in IT industry more than 4.5 years. I love to talk about programming as well as writing technical tutorials and blogs that can help to others .... keep learning :)

Get connected with me - LinkedIn Twitter Instagram Facebook