Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> PHP

पीएचपी थ्रोइंग एक्सेप्शन

परिचय

थ्रोएबल इंटरफ़ेस त्रुटि और अपवाद वर्ग द्वारा कार्यान्वित किया जाता है। सभी पूर्वनिर्धारित त्रुटि वर्ग त्रुटि वर्ग से विरासत में मिले हैं। संबंधित एरर क्लास का इंस्टेंस ट्राई ब्लॉक के अंदर फेंका जाता है और उपयुक्त कैच ब्लॉक के अंदर प्रोसेस किया जाता है।

फेंकने में त्रुटि

सामान्य निष्पादन (जब कोशिश ब्लॉक के भीतर कोई अपवाद नहीं फेंका जाता है) उस अंतिम कैच ब्लॉक को क्रम में परिभाषित करने के बाद जारी रहेगा।

उदाहरण

<?php
function div($x, $y) {
   if (!$y) {
      throw new Exception('Division by zero.');
   }
return $x/$y;
}
try {
   echo div(10,5) . "\n";
   echo div(10,0) . "\n";
} catch (Exception $e) {
   echo 'Caught exception: ', $e->getMessage(), "\n";
}
// Continue execution
echo "Execution continues\n";
?>

आउटपुट

निम्न आउटपुट प्रदर्शित होता है

2
Caught exception: Division by zero.
Execution continues

निम्नलिखित उदाहरण में, लेखन त्रुटि किसी फ़ंक्शन को निष्पादित करते समय फेंक दिया जाता है क्योंकि इसके लिए उपयुक्त तर्क पारित नहीं किए जाते हैं। संबंधित त्रुटि संदेश प्रदर्शित होता है

उदाहरण

<?php
function add(int $num1, int $num2){
   return $num1 + $num2;
}
try {
   $value = add(1, 'one');
} catch (TypeError $e) {
   echo $e->getMessage(). "\n";
}
?>

आउटपुट

निम्न आउटपुट प्रदर्शित होता है

Argument 2 passed to add() must be of the type integer, string given

एसपीएल अपवाद

मानक PHP पुस्तकालय में पूर्वनिर्धारित अपवाद हैं

LogicException अपवाद जो प्रोग्राम लॉजिक में त्रुटि का प्रतिनिधित्व करता है।
BadFunctionCallException अपवाद तब फेंका जाता है जब कोई कॉलबैक किसी अपरिभाषित फ़ंक्शन को संदर्भित करता है या यदि कुछ तर्क गायब हैं।
BadMethodCallException अपवाद तब फेंका जाता है जब कॉलबैक एक अपरिभाषित विधि को संदर्भित करता है या यदि कुछ तर्क गायब हैं।
डोमेन अपवाद अपवाद तब फेंका जाता है जब कोई मान किसी परिभाषित मान्य डेटा डोमेन का पालन नहीं करता है।
अवैधArgumentException अपवाद फेंका गया है यदि कोई तर्क अपेक्षित प्रकार का नहीं है।
लंबाई अपवाद यदि लंबाई अमान्य है तो अपवाद फेंक दिया जाता है।
OutOfRangeException अवैध अनुक्रमणिका का अनुरोध किए जाने पर अपवाद फेंका गया।
रनटाइम अपवाद अपवाद तब फेंका जाता है जब कोई त्रुटि होती है जो केवल रनटाइम पर पाई जा सकती है।
आउटऑफबाउंड अपवाद यदि कोई मान मान्य कुंजी नहीं है तो अपवाद फेंक दिया जाता है।
अतिप्रवाह अपवाद एक पूर्ण कंटेनर में एक तत्व जोड़ते समय अपवाद फेंक दिया गया।
रेंज अपवाद प्रोग्राम निष्पादन के दौरान श्रेणी त्रुटियों को इंगित करने के लिए अपवाद फेंका गया। अंडर/ओवरफ्लो के अलावा एक अंकगणितीय त्रुटि।
अंडरफ़्लो एक्सेप्शन खाली कंटेनर पर अमान्य ऑपरेशन करते समय अपवाद को फेंक दिया जाता है, जैसे कि किसी तत्व को हटाना।
अप्रत्याशित ValueException अपवाद तब फेंका जाता है जब कोई मान मानों के सेट से मेल नहीं खाता हो।

निम्न उदाहरण OutOfBoundsException दिखाता है PHP सरणी में एक कुंजी नहीं मिलने पर फेंक दिया जाता है

उदाहरण

<?php
$arr=array("one"=>1, "two"=>2,"three"=>3,"four"=>4);
$key="ten";
try{
   if (array_key_exists($key, $arr)==FALSE){
      throw new OutOfBoundsException("key not found");}
   else {
      echo $arr[$key];}
   }
   catch (OutOfBoundsException $e){
      echo $e->getMessage(). "\n";
}
?>

आउटपुट

निम्न आउटपुट प्रदर्शित होता है

key not found

  1. C++ में अपवाद कैसे काम करते हैं?

    सी ++ में, अपवाद हैंडलिंग रनटाइम त्रुटियों को संभालने की एक प्रक्रिया है। अपवाद एक घटना है जिसे सी ++ में रनटाइम पर फेंक दिया जाता है। सभी अपवाद std::Exception वर्ग से लिए गए हैं। यह एक रनटाइम त्रुटि है जिसे संभाला जा सकता है। अगर हम अपवाद को हैंडल नहीं करते हैं तो यह अपवाद संदेश को प्रिंट करता है औ

  1. Pry . में अपवादों के साथ कार्य करना

    यदि आप मेरे जैसे हैं, तो आप रेल कंसोल का बहुत उपयोग करते हैं। और अब तक मुझे लगता है कि हर कोई इस बात से सहमत है कि रेल कंसोल के लिए Pry सबसे अच्छी चीज है ... ठीक है, कभी भी। बिल्ट-इन टू प्राइ कुछ बहुत ही शानदार विशेषताएं हैं जो साधारण पुराने IRB की तुलना में अपवादों के साथ काम करना बहुत आसान बनाती

  1. रूबी में कस्टम अपवाद

    रूबी में अपने स्वयं के अपवाद बनाना आसान है। बस इन चरणों का पालन करें: 1. एक नई कक्षा बनाएं अपवाद वर्ग हैं, जैसे रूबी में बाकी सब कुछ! एक नए प्रकार का अपवाद बनाने के लिए, बस एक ऐसा वर्ग बनाएं जो StandardError या उसके किसी बच्चे से विरासत में मिला हो। class MyError < StandardError end raise MyErr