2010-07-29 9 views
14

वहाँ पायथन में try ... else लिए PHP में कुछ इसी तरह है?php कोशिश और ...

मुझे पता है कि कोशिश ब्लॉक सही ढंग से क्रियान्वित करता है, तो के रूप में जब ब्लॉक सही ढंग से क्रियान्वित, संदेश प्रिंट किया जाएगा की जरूरत है।

उत्तर

-1

आप 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"; 
} 
+0

डाउनवोट की व्याख्या करने के लिए देखभाल? मुझसे कोई गलती हो गई क्य? – MvanGeest

+2

मैंने डाउनवोट नहीं किया, लेकिन वह 'अन्य' ब्लॉक के बारे में पूछ रहा था, सामान्य रूप से अपवाद नहीं ... – ircmaxell

+0

ओह, और '$ ए = 13/0;' एक अपवाद फेंक नहीं देगा जब तक कि आपके पास कोई त्रुटि हैंडलर स्थापित नहीं है जो अपवाद फेंकता है ('set_error_handler (फ़ंक्शन ($ errno, $ errstr, $ errfile, $ errline) {नया त्रुटि अपवाद फेंक दें ($ errstr, 0, $ errno, $ errfile, $ errline);}); '... http://www.php.net/manual/en/class.errorexception.php) – ircmaxell

0

अजगर से परिचित नहीं है, लेकिन यह लगता है कि आप की कोशिश पकड़ने अपवादों के साथ इस्तेमाल किया ब्लॉक के बाद कर रहे हैं ...

http://php.net/manual/en/language.exceptions.php

-1

वहाँ 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'; 
+0

प्रश्न phython के "try-else" के बराबर PHP के बारे में था, जब भी कोई अपवाद नहीं फेंकने के बाद ब्लॉक को ब्लॉक करने के बाद कोड के ब्लॉक को निष्पादित करने का एक कॉम्पैक्ट तरीका होता है। – vokimon

40

पीएचपी ट्राई/कैच/बाकी नहीं है। आप फिर भी कैच ब्लॉक कि अगर यह चलाया गया था निर्धारित करने के लिए इस्तेमाल किया जा सकता में एक चर सेट कर सकते हैं:

$caught = false; 

try { 
    // something 
} catch (Exception $e) { 
    $caught = true; 
} 

if (!$caught) { 

} 
+0

यह '$ पकड़ा = सत्य' से भरा हो जाता है, यदि कई 'पकड़' ब्लॉक हैं तो बयान। – Artefacto

+0

लेकिन इस तरह पाइथन 'else' भी काम करता है। – webbiedave

+2

एक मामूली नोट, पाइथन का अन्य ब्लॉक केवल तभी निष्पादित किया जाएगा जब '$ पकड़ा गया 'गलत है, सच नहीं है ... – ircmaxell

0
try { 
    $clean = false; 
    ... 
    $clean = true; 
} catch (...) { ... } 

if (!$clean) { 
    //... 
} 

कि सबसे अच्छा आप क्या कर सकते हैं।

+0

प्रयास करने से पहले आपको $ प्रारंभिक मूल्य पर $ साफ सेट करना चाहिए। कैच ब्लॉक। वेबबिडेव का जवाब देखें। – jmz

+0

@jmz हम? क्यूं कर? यह उदासीन है; PHP में कोई ब्लॉक स्कोप नहीं है। – Artefacto

4

मुझे लगता है कि "अन्य" खंड थोड़ा सीमित है, जब तक कि आप वहां फेंकने वाले किसी भी अपवाद की परवाह नहीं करते हैं (या आप उन अपवादों को बुलबुला करना चाहते हैं) ... पायथन की मेरी समझ से, यह मूल रूप से समकक्ष है इस:

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 अपवाद फेंक सकते हैं ...)।

+0

मेरे मामले में यह 'पकड़ {} ' – Pathros

+0

@ircmaxell के अंदर अगला' प्रयास {} 'डालने में ठीक काम करता है, आपका" संपादन 2 "उत्तर एक अच्छा जवाब है। हो सकता है कि इसे एक अलग उत्तर के रूप में पोस्ट करें ताकि इसे स्वयं ही वोट दिया जा सके। – Beetle

संबंधित मुद्दे