वहाँ पायथन में try ... else
लिए PHP में कुछ इसी तरह है?php कोशिश और ...
मुझे पता है कि कोशिश ब्लॉक सही ढंग से क्रियान्वित करता है, तो के रूप में जब ब्लॉक सही ढंग से क्रियान्वित, संदेश प्रिंट किया जाएगा की जरूरत है।
वहाँ पायथन में try ... else
लिए PHP में कुछ इसी तरह है?php कोशिश और ...
मुझे पता है कि कोशिश ब्लॉक सही ढंग से क्रियान्वित करता है, तो के रूप में जब ब्लॉक सही ढंग से क्रियान्वित, संदेश प्रिंट किया जाएगा की जरूरत है।
आप try { } catch() { }
और throw
का उपयोग कर सकते हैं। http://php.net/manual/en/language.exceptions.php
try {
$a = 13/0; // should throw exception
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
या मैन्युअल देखें:
try {
throw new Exception("I don't want to be tried!");
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
अजगर से परिचित नहीं है, लेकिन यह लगता है कि आप की कोशिश पकड़ने अपवादों के साथ इस्तेमाल किया ब्लॉक के बाद कर रहे हैं ...
वहाँ php में try-catch
है।
उदाहरण:
function inverse($x) {
if (!$x) {
throw new Exception('Division by zero.');
}
else return 1/$x;
}
try {
echo inverse(5) . "\n";
echo inverse(0) . "\n";
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
// Continue execution
echo 'Hello World';
प्रश्न phython के "try-else" के बराबर PHP के बारे में था, जब भी कोई अपवाद नहीं फेंकने के बाद ब्लॉक को ब्लॉक करने के बाद कोड के ब्लॉक को निष्पादित करने का एक कॉम्पैक्ट तरीका होता है। – vokimon
पीएचपी ट्राई/कैच/बाकी नहीं है। आप फिर भी कैच ब्लॉक कि अगर यह चलाया गया था निर्धारित करने के लिए इस्तेमाल किया जा सकता में एक चर सेट कर सकते हैं:
$caught = false;
try {
// something
} catch (Exception $e) {
$caught = true;
}
if (!$caught) {
}
यह '$ पकड़ा = सत्य' से भरा हो जाता है, यदि कई 'पकड़' ब्लॉक हैं तो बयान। – Artefacto
लेकिन इस तरह पाइथन 'else' भी काम करता है। – webbiedave
एक मामूली नोट, पाइथन का अन्य ब्लॉक केवल तभी निष्पादित किया जाएगा जब '$ पकड़ा गया 'गलत है, सच नहीं है ... – ircmaxell
try {
$clean = false;
...
$clean = true;
} catch (...) { ... }
if (!$clean) {
//...
}
कि सबसे अच्छा आप क्या कर सकते हैं।
मुझे लगता है कि "अन्य" खंड थोड़ा सीमित है, जब तक कि आप वहां फेंकने वाले किसी भी अपवाद की परवाह नहीं करते हैं (या आप उन अपवादों को बुलबुला करना चाहते हैं) ... पायथन की मेरी समझ से, यह मूल रूप से समकक्ष है इस:
try {
//...Do Some Stuff Here
try {
// Else block code here
} catch (Exception $e) {
$e->elseBlock = true;
throw $e;
}
} catch (Exception $e) {
if (isset($e->elseBlock) && $e->elseBlock) {
throw $e;
}
// catch block code here
}
तो उसे कुछ अतिरिक्त वर्बोज़ है (जब से तुम अपवादों को फिर से हटाने की आवश्यकता), लेकिन यह भी ढेर बाकी खंड के रूप में ही ऊपर बुलबुले ...
संपादित या, थोड़ा क्लीनर संस्करण (5.3 केवल)
class ElseException extends Exception();
try {
//...Do Some Stuff Here
try {
// Else block code here
} catch (Exception $e) {
throw new ElseException('Else Clasuse Exception', 0, $e);
}
} catch (ElseException $e) {
throw $e->getPrevious();
} catch (Exception $e) {
// catch block code here
}
संपादित 2
फिर से पढ़ने अपने प्रश्न, मुझे लगता है कि आप एक "और" ब्लॉक के साथ बातें overcomplicating किया जा सकता है ... तुम बस मुद्रण कर रहे हैं (जो एक फेंक की संभावना नहीं है अपवाद), तुम सच में एक और को ब्लॉक की जरूरत नहीं है:
try {
// Do Some stuff
print "Success";
} catch (Exception $e) {
//Handle error here
print "Error";
}
कि कोड ही कभी या तोSuccess
या Error
... कभी दोनों (के बाद से print
समारोह अपवाद फेंकता है, यह जीत लिया 'प्रिंट होगा वास्तव में मुद्रित नहीं किया जाएगा ... लेकिन मुझे नहीं लगता कि print
अपवाद फेंक सकते हैं ...)।
डाउनवोट की व्याख्या करने के लिए देखभाल? मुझसे कोई गलती हो गई क्य? – MvanGeest
मैंने डाउनवोट नहीं किया, लेकिन वह 'अन्य' ब्लॉक के बारे में पूछ रहा था, सामान्य रूप से अपवाद नहीं ... – ircmaxell
ओह, और '$ ए = 13/0;' एक अपवाद फेंक नहीं देगा जब तक कि आपके पास कोई त्रुटि हैंडलर स्थापित नहीं है जो अपवाद फेंकता है ('set_error_handler (फ़ंक्शन ($ errno, $ errstr, $ errfile, $ errline) {नया त्रुटि अपवाद फेंक दें ($ errstr, 0, $ errno, $ errfile, $ errline);}); '... http://www.php.net/manual/en/class.errorexception.php) – ircmaxell