पीएचपी अपवाद
एक अपवाद क्या है?
अपवाद एक ऐसी वस्तु है जो PHP स्क्रिप्ट की त्रुटि या अप्रत्याशित व्यवहार का वर्णन करती है।
कई PHP फ़ंक्शंस और कक्षाओं द्वारा अपवादों को फेंक दिया जाता है।
उपयोगकर्ता परिभाषित कार्य और वर्ग भी अपवाद फेंक सकते हैं।
अपवाद किसी फ़ंक्शन को रोकने का एक अच्छा तरीका है जब यह डेटा के सामने आता है जिसका वह उपयोग नहीं कर सकता है।
एक अपवाद फेंकना
throw
कथन उपयोगकर्ता परिभाषित फ़ंक्शन या विधि को अपवाद फेंकने की अनुमति देता है। जब कोई अपवाद फेंका जाता है, तो उसके बाद के कोड को निष्पादित नहीं किया जाएगा।
यदि कोई अपवाद पकड़ा नहीं जाता है, तो "अनकॉटेड अपवाद" संदेश के साथ एक घातक त्रुटि उत्पन्न होगी।
आइए इसे पकड़े बिना अपवाद को फेंकने का प्रयास करें:
उदाहरण
<?php
function divide($dividend, $divisor) {
if($divisor == 0)
{
throw new Exception("Division by zero");
}
return $dividend / $divisor;
}
echo divide(5, 0);
?>
परिणाम कुछ इस तरह दिखेगा:
Fatal error: Uncaught Exception: Division by zero in
C:\webfolder\test.php:4
Stack trace: #0 C:\webfolder\test.php(9):
divide(5, 0) #1 {main} thrown in C:\webfolder\test.php on line 4
ट्राई...कैच स्टेटमेंट
उपरोक्त उदाहरण से त्रुटि से बचने के लिए, हम
try...catch
अपवादों को पकड़ने और प्रक्रिया को जारी रखने के लिए कथन का उपयोग कर सकते हैं।
वाक्य - विन्यास
try {
code that can throw exceptions
} catch(Exception $e) {
code that runs when an exception is caught
}
उदाहरण
अपवाद फेंके जाने पर एक संदेश दिखाएं:
<?php
function divide($dividend, $divisor) {
if($divisor ==
0) {
throw new Exception("Division by zero");
}
return $dividend / $divisor;
}
try {
echo
divide(5, 0);
} catch(Exception $e) {
echo "Unable to divide.";
}
?>
कैच ब्लॉक इंगित करता है कि किस प्रकार का अपवाद पकड़ा जाना चाहिए और वेरिएबल का नाम जिसका उपयोग अपवाद तक पहुंचने के लिए किया जा सकता है। ऊपर के उदाहरण में, अपवाद का प्रकार है Exception
और चर नाम है $e
।
कोशिश...पकड़ो...आखिरकार बयान
कथन का try...catch...finally
उपयोग अपवादों को पकड़ने के लिए किया जा सकता है। finally
चाहे कोई अपवाद पकड़ा गया हो या नहीं, ब्लॉक में कोड
हमेशा चलेगा। यदि
finally
मौजूद है, तो catch
ब्लॉक वैकल्पिक है।
वाक्य - विन्यास
try {
code that can throw exceptions
} catch(Exception $e) {
code that runs when an exception is caught
} finally {
code that
always runs regardless of whether an exception was caught
}
उदाहरण
एक अपवाद फेंके जाने पर एक संदेश दिखाएं और फिर इंगित करें कि प्रक्रिया समाप्त हो गई है:
<?php
function divide($dividend, $divisor) {
if($divisor
== 0) {
throw new Exception("Division by zero");
}
return $dividend / $divisor;
}
try {
echo
divide(5, 0);
} catch(Exception $e) {
echo "Unable to
divide. ";
} finally {
echo "Process complete.";
}
?>
उदाहरण
एक स्ट्रिंग आउटपुट करें, भले ही कोई अपवाद नहीं पकड़ा गया हो:
<?php
function divide($dividend, $divisor) {
if($divisor == 0)
{
throw new Exception("Division by zero");
}
return $dividend / $divisor;
}
try {
echo divide(5, 0);
} finally {
echo
"Process complete.";
}
?>
अपवाद वस्तु
अपवाद ऑब्जेक्ट में त्रुटि या अप्रत्याशित व्यवहार के बारे में जानकारी है जो फ़ंक्शन का सामना करना पड़ा।
वाक्य - विन्यास
new Exception(message, code, previous)
पैरामीटर मान
Parameter | Description |
---|---|
message | Optional. A string describing why the exception was thrown |
code | Optional. An integer that can be used used to easily distinguish this exception from others of the same type |
previous | Optional. If this exception was thrown in a catch block of another exception, it is recommended to pass that exception into this parameter |
तरीकों
अपवाद को पकड़ते समय, निम्न तालिका कुछ विधियों को दिखाती है जिनका उपयोग अपवाद के बारे में जानकारी प्राप्त करने के लिए किया जा सकता है:
Method | Description |
---|---|
getMessage() | Returns a string describing why the exception was thrown |
getPrevious() | If this exception was triggered by another one, this method returns the previous exception. If not, then it returns null |
getCode() | Returns the exception code |
getFile() | Returns the full path of the file in which the exception was thrown |
getLine() | Returns the line number of the line of code which threw the exception |
उदाहरण
एक अपवाद के बारे में आउटपुट जानकारी जिसे फेंक दिया गया था:
<?php
function divide($dividend, $divisor) {
if($divisor == 0)
{
throw new Exception("Division by zero", 1);
}
return $dividend / $divisor;
}
try {
echo
divide(5, 0);
} catch(Exception $ex) {
$code = $ex->getCode();
$message = $ex->getMessage();
$file = $ex->getFile();
$line = $ex->getLine();
echo "Exception thrown in $file on line
$line: [Code $code]
$message";
}
?>
पूर्ण अपवाद संदर्भ
संपूर्ण संदर्भ के लिए, हमारे संपूर्ण PHP अपवाद संदर्भ पर जाएं ।
संदर्भ में सभी अपवाद विधियों के विवरण और उदाहरण हैं।