2012-04-23 52 views
4

我發現TwistedSNMP庫下面的代碼:在python中加入語句之後可能執行語句嗎?

try: 
    raise ImportError 
    import psyco 
except ImportError, err: 
    pass 
else: 
    from pysnmp.asn1 import base 
    psyco.bind(base.SimpleAsn1Object) psyco.bind(base.Asn1Object) 

源文件名:pysnmpproto.py, Line 42

是否有任何情況下,要麼import psycoelse塊永遠不會被執行?

+4

它不叫空轉,你知道。 – 2012-04-23 12:51:17

+1

加註只是爲了「註釋掉」下面的所有代碼。 – ch3ka 2012-04-23 13:07:02

+0

@ ch3ka:也許吧。但是,它不是以一種相當離奇的方式來評論代碼嗎? – NPE 2012-04-23 13:08:52

回答

2

import psyco將永遠不會到達,因爲在上一行中引發的異常。 except條款將捕獲該例外情況,在這種情況下,該條款無效。將永遠不會達到else子句,因爲只有在try子句無例外地執行時才能達到該子句。

簡而言之,這段代碼總是會引發一個異常,抓住它並且什麼都不做。它應該被刪除。

+0

想法一樣,但想確認。感謝您的解釋。 – Vikas 2012-04-23 13:41:08