3 回答

TA貢獻2037條經驗 獲得超6個贊
好的,我可以嘗試給出一個盡可能保持中立的答案……(注意:我已經用幾個月的時間完成了Python的專業工作,但是我還遠遠不能完全掌握該語言)
該準則是“免費的”;如果你來自一個Java的背景,你肯定會花更多的時間比大多數的Python開發者那里尋找什么被拋出時的文件,并有更多
try
/except
/finally
比常規Python代碼中找到。換句話說:做適合自己的事。除了它們可以隨時隨地拋出的事實之外,Python還具有多異常捕獲(僅從7開始才在Java中可用)
with
(某種程度上等效于Java 7的try-with-resources),您可以擁有多個except
塊(例如Java可以catch
不止一次)等等。此外,我不知道應如何命名異常的真正約定,因此,如果您看到SomeError
,不要被愚弄,這很可能是Java開發人員認為的“已檢查的異?!?,而不是Error
。

TA貢獻1946條經驗 獲得超4個贊
我不是Python開發人員,但我在C#中做了很多工作,但C#中也沒有檢查異常。作為一名Java編碼器,這需要一些時間來適應。我個人仍然認為檢查異常是一個不錯的功能,但是意見卻大相徑庭(正如您在此處的某些回復中所看到的)。
在線上有很多文章介紹為什么檢查異常不是一個好主意(有關這種觀點,請參閱此博客)。
但是,不管您的喜好如何:Python和C#的經驗法則基本上是做您已經在做的事情-測試運行并閱讀文檔。
我通常在C#中要做的是,在程序的根目錄中有一個“全部捕獲”異常處理程序,以確保報告任何錯誤并且程序干凈退出,然后在我的代碼中更深層的地方有針對“已知的特定錯誤”。因此,實際上,與您在Java中的工作方式沒有什么不同,只是要多做一點工作才能弄清楚將特定處理程序放在哪里。

TA貢獻1809條經驗 獲得超8個贊
最佳實踐是在適當的位置處理適當的異常。作為開發人員,只有您自己可以決定代碼的哪一部分應該捕獲異常。隨著體面的單元測試,這應該變得顯而易見。如果您有未處理的異常,它們將會出現。
您已經描述了差異。從根本上講,Java的設計師認為他們比您更了解應該如何編碼,并且會迫使您編寫大量代碼。相比之下,Python假設您是成年人,并且您知道自己想做什么。這意味著您可以堅持射擊自己。
添加回答
舉報