2010-07-21 53 views
3

我有時會看到前綴爲「Try」的.net框架中的方法,例如int.TryParse(..)。是否有「嘗試」慣例?

我認爲這意味着該方法與int.parse相同,但包裝在try catch中?

這是否意味着如果我寫這讓他們(例如日誌記錄,這是我從來沒有想拋出一個異常)圍繞一個嘗試捕捉方法,應以「嘗試」,以及前綴?

回答

7

你的假設可能是正確的,但這不是的Try***類型的方法的含義。

的承諾確實是,該方法不會拋出異常(這是如何內部管理無所謂)調用時。

你會發現,這些方法返回一個布爾值,指示是否Try***成功與否。

TryParse方法特別具有out參數,如果成功,該參數將使用解析結果填充。

直接回答的問題:

  • 沒有具體約定
  • 如果該方法的語義意味着一個異常不會被拋出,但調用的代碼將成功/失敗的通知,你可以將其命名Try***因爲這是這樣一個名字
0

沒有與異步操作(BeginXXX EndXXX)同義的約定,但它用於區分將與其他代碼執行相同操作但不會拋出異常的代碼(通過吞吐異常或不生成它們。

如果你的代碼是不提供異常處理的另一種方法替代,我會嘗試前綴,因爲它多少有些 - 和.NET的人會先假定它是行爲不會拋出異常。

這可通過返回一個成功的布爾和放置的返回值作爲out參數再增強。

要回答這個問題 - 它不應該放在任何處理異常的方法周圍;只有在邏輯上合理地提供我概述的行爲的情況下,當前由.NET Framework中的某些實例提供的行爲。

0

的int.TryParse方法隱含的那種行爲並不等同於包裝紙的try/catch在性能方面int.parse。 int.TryParse的目的是爲了避免異常拋出導致的性能影響,所以將int.TryParse作爲int.parse實現用try/catch包裝沒有意義。