3
我想知道如何處理具有相同「類型」的不同異常。我試圖使用一些代碼來創建一個目錄:用不同的錯誤代碼處理異常
os.mkdir(target_dir_name)
而且我知道這可能會失敗的原因有多種,例如,如果該目錄已經存在:
OSError: [Errno 17] File exists:
,或者如果有沒有權限來創建一個新的目錄:
OSError: [Errno 13] Permission denied:
我想我定製的錯誤消息,具體的故障原因,所以我想出了下面的代碼:
try:
os.mkdir(target_dir_name)
except OSError as e:
if e.errno == 17:
print "Warning: Directory %s already exists, executing a rebuild" % (target_dir_name)
elif e.errno == 13:
sys.exit("Error: Directory "+target_dir_name+" cannot be created incorrect permissions")
但我想做一些少硬編碼的東西。有沒有Pythonic的方法可以更新我的子失敗檢查?
在Python 3.3,有錯誤得到了分成不同的類型:http://docs.python.org/3/whatsnew/3.3.html#pep-3151- reworking-the-os-and-io-exception-hierarchy – delnan
我還沒有找到一個優雅的解決方案,因爲很多這些異常和錯誤類型對於它們的屬性都是非常特定的。所以一般在這種情況下,我通常會做什麼http://stackoverflow.com/a/16268642/158111建議 - 將特定的錯誤處理包裝到函數中,並避免重複的硬編碼。 – woozyking
@delnan - 感謝您的意見。當我完成它時,這將是一個分佈式腳本,如果我可以幫助它的話,我不想將自己綁定到一個Python版本。我無法保證每個人都會運行,但我認爲2.7.3會非常安全(因爲這是最新的穩定Ubuntu版本的標準) – Mike