2010-09-22 33 views
5

Python 2.6.1'de bir IMAP sunucusuyla arabirim oluşturan AIX 5.3 için bir program yapıyorum. Nasıl yakalanacağımı bilmediğim bir istisna alıyorum - "istisna" ile kullanabileceğim bir isimde görünmüyor. Hata, sunucuya bağlantıda bir tür zaman aşımı gibi görünüyor.Python: Bu tür bir istisna nasıl yakalanır?

yığın izlemesi son kısmı şu şekildedir:

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 

Ben sadece Zamanı geldiğinde IMAP sunucusuna yeniden böylece, bu özel hatayı yakalamak istiyorum. Bu tür bir istisna yakalamak için sözdizimi nedir?

cevap

9

istisna imaplib.IMAP4.abort (Python doc) böylece alıcı olduğunu çalışması gerekir ise

+0

Şimdi anlıyorum. Self.abort() 'un bir işlev olduğunu (ki bu da beni şaşırttı, bir işlevi istisna olarak nasıl kullanabilirsin?), Ama şimdi bunun bir istisna olduğunu anladım! Teşekkürler! – Enfors

3
bunu yakalamak ve türünü öğrenmek için deneyebilirsiniz

:

import sys, Traceback, 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, OP istisnaları nasıl ele alacağını bilir, onun sorunu self.abort'u nasıl yakalayacağınızı bilmek ve cevabınızı biçimlendirmeye devam etmek, kod ile kod gereksinimlerini biçimlendirmek için kodları takmakla TAG 'code' – shahjapan

+1

Yazınızı düzelttim. 'dışında', 'İstisna' değil. Bunun dışında, kod yazdığınız gibidir ve biçimlendirmeyi düzelttim. 'Düzenle'yi tıklarsanız, nasıl çalıştığını görebileceksiniz. Sadece dört alanı biçimlendirmek istediğiniz her şeyi sağa doğru başlatın. – aaronasterling

+0

biçimlendirme ipucu için teşekkür ederiz :) –

İlgili konular