PHP Errors
Introduction to PHP Errors
जब भी आपके code में कोई error आती है तो PHP उसे एक report की तरह show करती है। जितनी भी errors PHP शो करती है वो किसी ना किसी type की होती है। ये सभी types PHP में constants के द्वारा represent किये गए है और इन सभी की value integer होती है। जब किसी constant की value 1 होती है तो वो error आपको शो होती है। और जब तक उस type की error नहीं आती है तब तक constant की value 0 रहती है। आइये इन error types के बारे में detail से जानने का प्रयास करते है।
Types of PHP Errors
Constants | Description |
---|---|
E_Error | ये एक रन टाइम error होती है। इससे program रुक जाता है। जैसे की memory allocation problem. |
E_WARNING | ये रन time warnings होती है इससे program रुकता नहीं है। |
E_PARSE | ये compile time parse errors होती है। |
E_NOTICE | ये run time में notice होता है की error generate हो सकती है। |
E_CORE_ERROR | ये वो error होती है जो PHP के startup में आती है। |
E_CORE_WARNING | ये वो warnings होती है जो PHP के startup में show होती है। |
E_COMPILE_ERROR | ये वो errors होती है जो PHP code को compile करते समय generate होती है। |
E_COMPILE_WARNING | ये वो warnings होती है जो PHP code को compile करते समय शो होती है। |
E_USER_ERROR | ये वो errors होती है जो user खुद के कोड द्वारा खुद generate करता है। |
E_USER_WARNING | ये यूजर के द्वारा generate की गयी warnings होती है। |
E_USER_NOTICE | ये यूजर के द्वारा generate किए हुए notices होते है। |
E_STRICT | ये आपके कोड को improve करने के लिए PHP द्वारा दिए हुए suggestions होते है। |
E_RECOVERABLE_ERROR | ये errors आसानी से पकड़ में आने वाली होती है। इनसे आपकी application को कोई नुकसान नहीं होता है। |
E_ALL | ये सभी errors को एक साथ represent करने के लिए यूज़ की जाती है। |
Error Handling
जब भी आपके program में error आये तो उसे handle करना बहुत जरुरी होता है। यदि आप error handling का काम PHP पर छोड़ेंगे तो error आने पर ज्यादातर समय आपका program रुक जाता है। लेकिन यदि आप चाहते है की error आने पर भी आपका प्रोग्राम ना रुके तो आप उन errors को खुद handle कर सकते है। इसका पहला तरीका तो ये है की आप die() function यूज़ करे।
उदाहरण के लिए आप किसी file को PHP code के द्वारा open कर रहे है। लेकिन यदि वो फाइल exist नहीं करती तो आपका program error शो करेगा और terminate हो जायेगा। यदि आप चाहते है की आपका program error शो करे लेकिन terminate ना हो तो इसके लिए आप पहले error condition को चेक करते है। मतलब पहले आप चेक करते है की file exist करती है या नहीं और यदि file exist नहीं करती है तो आप die() function के द्वारा एक error message शो कर देते है।
<?php
if(error_condition)
{
die("Error Message");
}
?>
PHP में errors handle करने का दूसरा तरीका ये है की आप एक खुद का error handler क्रिएट करे। ऐसा करने के लिए आप error_function() use करते है। इस function में आप 2 parameters पास करते है एक तो ऊपर define किये गए error constants और दूसरा error message होता है।
error_function(error_type_constant, error_message)
{
//handle this type of errors here
}
जब एक बार आप error handler define कर दे तो उस तरह की errors के लिए आपको उसे set भी करना पड़ता है। ताकि जब भी उस type की कोई error आये तो आपका function उसे handle कर ले। ऐसा आप इस तरह से कर सकते है -
set_error_handler("myErrorFunction");
Error handler function द्वारा error handle करने का उदाहरण निचे दिया जा रहा है।
<?php
function errorHandler($errno, $errstr) //Error handler function
{
echo "<h2>Error Number : $errno</h2>"; //Displaying error number.
echo "<h2>Error Description : $errstr</h2>"; //Displaying error description.
}
set_error_handler(errorHandler); //Setting error handler
echo "$name"; //Generating error.
?>
ऊपर दिए गए उदाहरण में सबसे पहले एक error handler function create किया गया है। यह function program में error आने पर call होगा। इसके बाद set_error_handler() method द्वारा इसे set किया गया है। आखिर में $name को print करने का प्रयास किया गया है। यह statement error generate करता है क्योंकि $name variable को कँही define ही नहीं किया गया है। यह उदाहरण निचे दिया गया output generate करता है।
PHP आपको एक और feature provide करती है। PHP में आप खुद की error भी generate कर सकते है और message शो कर सकते है। इसके लिए आप trigger_error function यूज़ करते है। उदाहरण के लिए आप चाहते है की यूज़र किसी variable के लिए 10 से maximum value input ना करे और यदि यूजर ऐसा करता है तो आपको उसे error शो करनी है। ऐसा आप इस प्रकार कर सकते है।
if($value>10)
{
trigger_error("Value can not be more than 10");
}
PHP Exceptions
PHP भी दूसरी programming languages की तरह exception handling mechanism provide करती है। इसमें आप कुछ keywords की मदद से exceptions को handle करते है। Exceptions ऐसी errors होती है जो run time पर आती है और जिनकी वजह से प्रोग्राम का execution रुक जाता है। जैसे की यदि आप किसी number को 0 से divide कर दे तो program का execution रुक जायेगा। ये एक arithmetic exception है। ये keywords निचे दिए जा रहे है-
Constants | Description |
---|---|
Try | ये एक ब्लॉक होता है। इसमें आप वो code लिखते है, जिसमे error generate हो सकती है। |
Catch | ये भी एक block होता है जिसमे आप exceptions को catch करते है और उनपे action लेते है। |
Throw | ये एक keyword होता है, try block के बाहर से exceptions throw करने के लिए यूज़ किया जाता है। |
Finally | Exception को handle करने के बाद यदि आप कुछ task perform करना चाहते है वो इस block में आता है। |
Example:
<?php
function anyFunction($num)
{
if($num==0)
{
throw new Exception("Divide By Zero!");
}
$result = 100/$num;
return $result;
}
try
{
echo anyFunction(0);
}
catch(Exception $e)
{
echo "<b>Exception : </b>",$e->getMessage();
}
?>
ऊपर दिए गए उदाहरण में anyFunction को call करते समय zero pass किया गया है। Function के अंदर ये check किया जा रहा है की pass किया गया number zero है या नहीं। यदि number zero है तो exception generate होगी। यदि number zero नहीं है तो 100 को उस number से divide करके result show किया जाएगा। यह उदाहरण निचे दिया गया output generate करता है।