python中的with異常處理與JAVA中類似的比較

一般情況下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();
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容