我很難找到一個好的數據源來了解如何處理和引發異常。輔助函數或類方法是否應該處理引發的問題,或者調用者處理捕獲異常的邏輯是否是正常約定?我們是否在兩個地方都這樣做并一直跟蹤堆棧跟蹤?選項A:def change_permissions(file): os.chmod(file, 0o755)try: change_permissions('/Users/user/Documents/file.txt')except Exception: print('do something with this')選項B:def change_permissions(file): try: os.chmod(file, 0o755) except EnvironmentError: print('do something with this')change_permissions('/Users/user/Documents/file.txt')
1 回答

白板的微信
TA貢獻1883條經驗 獲得超3個贊
不要將異常捕獲為 e
捕獲 Exception 的問題與類型繼承有關(因此,插曲),因為我們不僅會捕獲應用程序中的所有自定義異常,還會捕獲一大堆 Python 內置異常,包括一些您可能不希望拋出的異常離開。你需要特別選擇,因為所以選項 B 是最好的選擇
其他最佳實踐
有一些在 python 中處理異常的最佳實踐,這一切都與你有關。
切勿使用異常進行流量控制
不要暴露異常的實現細節
記錄代碼拋出的異常
了解我們在哪里需要斷言和異常。
添加回答
舉報
0/150
提交
取消