我正在閱讀Robert C. Martin的「Clean Code」一書,他強烈建議「將try和catch塊的主體抽出到自己的函數中「提取Try/Catch塊 - 微軟公約/標準
下面是書中例子,要清楚:
public void delete(Page page)
{
try
{
deletePageAndAllReferences(page);
}
catch (Exception e)
{
logError(e);
}
}
private void deletePageAndAllReferences(Page page) throws Exception {
deletePage(page);
registry.deleteReference(page.name);
configKeys.deleteKey(page.name.makeKey());
}
private void logError(Exception e) {
logger.log(e.getMessage());
}
的理由這樣做是:
- try/catch塊混淆structu重新編碼和混合錯誤處理與正常處理
- 很好的分離,使代碼更容易理解和修改。
的事情是,我已經工作了幾年在幾個項目,這絕不是一個規則,我沒有發現誰遵循這甚至在他們最關心乾淨的代碼的環境中的人。
所以我想知道: 這本書的例子是基於Java的,我正在使用C#/ .NET,.NET的社區有什麼標準或慣例來自.NET社區?
歡迎來到現實世界;有多少人甚至可以完成「代碼完成」中強調的基本內容?我記得一個剛剛上大學的編碼員到達一個項目並且幾乎尖叫,「規格!規格!功能規格在哪裏!」當滾石樂隊演唱並演奏時,你總是無法得到你想要的東西。 –
有一天,有人可能會遇到'deletePageAndAllReferences()',並說 - 「誰在這裏沒有放任何try-catch的愚蠢的nincompoop?讓我添加一個」_「。然後,你最終嘗試趕上嘗試捕捉奇蹟的表現 – MickyD
這是Java或C#('拋出異常{')? – Rob