2010-09-22 12 views
5

मैं पायथन 2.6.1 में AIX 5.3 के लिए एक प्रोग्राम बना रहा हूं जो एक IMAP सर्वर के साथ इंटरफेस करता है। मुझे एक अपवाद मिल रहा है जिसे मैं नहीं जानता कि कैसे पकड़ना है - ऐसा लगता है कि ऐसा कोई नाम नहीं है जिसे मैं "छोड़कर" के साथ उपयोग कर सकता हूं। त्रुटि सर्वर के कनेक्शन में किसी प्रकार का टाइमआउट प्रतीत होता है।पायथन: इस तरह के अपवाद को कैसे पकड़ें?

स्टैक ट्रेस के अंतिम भाग इस तरह दिखता है:

File "/home/chenf/python-2.6.1/lib/python2.6/imaplib.py", line 890, in _command_complete 
    raise self.abort('command: %s => %s' % (name, val)) 
abort: command: SEARCH => socket error: EOF 

मैं केवल इस विशिष्ट त्रुटि को पकड़ने के लिए, ताकि मैं IMAP सर्वर से पुन: कनेक्ट कर सकते हैं जब ऐसा होता है चाहता हूँ। इस तरह के अपवाद को पकड़ने के लिए वाक्यविन्यास क्या है?

उत्तर

9

अपवाद imaplib.IMAP4.abort (Python doc) तो पकड़ने कि काम करना चाहिए है

+0

ओह, अब मैं समझता हूं। मैंने सोचा कि self.abort() एक फ़ंक्शन था (जो मुझे उलझन में डालता है, आप एक फ़ंक्शन को अपवाद के रूप में कैसे उपयोग कर सकते हैं?), लेकिन अब मुझे एहसास है कि यह एक अपवाद है! धन्यवाद! – Enfors

3

आप इसे पकड़ने और प्रकार पता लगाने के लिए कोशिश कर सकते हैं:

आयात सिस, ट्रैस बैक, pprint

try: 
    do what you want to do 
except: 
    type, value, tb = sys.exc_info() 
    pprint.pprint(type) 
    print("\n" + ''.join(traceback.format_exception(type, value, tb)).strip("\n")) 
+0

-1, ओपी जानता है कि अपवादों को कैसे संभालना है, उसकी समस्या यह जानना था कि self.abort को कैसे पकड़ें, और अपना उत्तर तैयार रखें, कोड कोड के साथ कोड कोड बनाने की आवश्यकता है चिपकने वाला कोड 'कोड' – shahjapan

+1

मैंने आपकी पोस्ट तय की है। यह 'छोड़कर' है, 'अपवाद नहीं '। इसके अलावा कोड जैसा आपने लिखा है और मैंने बस स्वरूपण को ठीक किया है। यदि आप 'संपादित करें' पर क्लिक करते हैं, तो आप यह देख पाएंगे कि यह कैसे काम करता है। बस चार रिक्त स्थान को दाईं ओर स्वरूपित करना चाहते हैं। – aaronasterling

+0

फ़ॉर्मेटिंग टिप के लिए धन्यवाद :) –

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