2010-09-22 51 views
5

Tôi đang tạo một chương trình cho AIX 5.3 trong Python 2.6.1 giao diện với máy chủ IMAP. Tôi nhận được một ngoại lệ mà tôi không biết làm thế nào để bắt - nó dường như không có một tên mà tôi có thể sử dụng với "ngoại trừ". Lỗi này có vẻ là một loại thời gian chờ trong kết nối với máy chủ.Python: Cách bắt loại ngoại lệ này?

Phần cuối cùng của stack trace trông như thế này:

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 

tôi chỉ muốn bắt lỗi cụ thể này, vì vậy mà tôi có thể kết nối lại với máy chủ IMAP khi nó xảy ra. Cú pháp để bắt loại ngoại lệ này là gì?

Trả lời

9

Trường hợp ngoại lệ là imaplib.IMAP4.abort (Python doc) để đánh bắt mà nên làm việc

+0

Ồ, tôi hiểu ngay bây giờ. Tôi nghĩ self.abort() là một hàm (làm tôi bối rối, làm sao bạn có thể sử dụng một hàm như một ngoại lệ?), Nhưng bây giờ tôi nhận ra đó là một ngoại lệ! Cảm ơn! – Enfors

3

bạn có thể thử để bắt nó và tìm ra các loại:

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 biết cách xử lý các ngoại lệ, vấn đề của anh ta là biết cách bắt self.abort và giữ câu trả lời của bạn được tạo thành, dán mã cần thiết với mã TAGs 'code' – shahjapan

+1

Tôi đã sửa bài đăng của bạn. nó là 'ngoại trừ:', không phải là 'Ngoại lệ'. Khác hơn là mã như bạn đã viết nó và tôi chỉ cố định định dạng. Nếu bạn nhấp vào 'chỉnh sửa', thì bạn sẽ có thể xem nó hoạt động như thế nào. Chỉ cần bắt đầu mọi thứ bạn muốn định dạng bốn không gian bên phải. – aaronasterling

+0

cảm ơn bạn về mẹo định dạng :) –

Các vấn đề liên quan