一般情況下python的異常處理是用try ... except ... finally來處理的,例如打開一個文件
f = open(filename)
try:
''' do something '''
except IOError:
print('I/O error')
finally:
f.close()
這么做的缺點是非常麻煩,特別是如果里面有嵌套的try ... except的語句的話就等著加游標卡尺吧。所以說python提供了with關鍵詞來解決這個問題,以上的代碼可以變成:
with open(filename) as f:
''' do something'''
變成一句了,是不是覺得變得簡單了?
而且還可以處理多個:
with open(file1) as f1, open(file2) as f2:
''' do something'''
不過使用with會直接將錯誤拋出,目前還沒有找到在with里特殊處理錯誤的方法。
同樣,JAVA7往后的版本也提供了類似的東西:
InputStream i = getStream()
try {
// do something
} catch(Exception e) {
e.printStack();
} finally {
try {
i.close();
} catch(Exception e) {
e.printStack();
}
}
變成
try(IntpuStream i = getStream()) {
// do something
} catch(Exception e) {
e.printStack();
}