2013-02-16 30 views
15

Tôi đã có một Lỗi Cú pháp trên của tôi ngoại trừ:Có gì sai với ngoại trừ của tôi?

try: 
    opts, args = getopt.getopt(sys.argv[1:], 'P:D:H:d:u:p:nvhmJi:c:Ml:TB:', 
      ['host=', 'port=', 'directory=', 'user=', 'password=', 
      'daemon=', 'noauth', 'help', 'verbose', 'mysql', 
      'icounter=', 'config=', 'nolock', 'nomime', 'loglevel', 'noiter', 
      'baseurl=']) 
except getopt.GetoptError, e: 
    print usage 
    print '>>>> ERROR: %s' % str(e) 
    sys.exit(2) 

tôi nhận được lỗi:

File "main.py", line 199 

except getopt.GetoptError, e: 

SyntaxError: invalid syntax 

Bất cứ ai có bất cứ ý tưởng?

+1

Thử 'ngoại trừ getopt.GetoptError là e'? – cnicutar

+1

Khám phá cuộc thảo luận này về cùng một vấn đề: http://stackoverflow.com/questions/2535760/python-try-except-comma-vs-as-in-except –

Trả lời

5

cú pháp của bạn không hợp lệ cho việc đánh bắt các ngoại lệ

Bạn nên đã viết except getopt.GetoptError as e: thay vì except getopt.GetoptError, e:

+1

Đây là cú pháp chính xác trong các phiên bản trước của Python , Tuy nhiên. – tripleee

28

Bạn sử dụng python3 và trong python3 the raise syntax no longer accepts comma-separated arguments.

Sử dụng as thay vì:

except getopt.GetoptError as e: 

Hình thức này cũng tương thích ngược với 2.6 và 2.7.

+0

Ok, cảm ơn! nó đang làm việc bây giờ =) – lagarkane

+0

Tôi muốn thêm rằng nếu OP muốn mã tương thích với python <2.6 thì anh ta nên sử dụng 'ngoại trừ getopt.GetoptError:' và sau đó lấy thông tin lỗi bằng cách sử dụng 'sys.exc_info()' – Bakuriu

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