是否有任何關於在大型軟件中每個源代碼行有多少catch語句的規則?例如,在用C#編寫的軟件中,Visual Studio顯示了大約350行包含單詞「catch」的行,並且cloc報告說我們有大約160k SLOC,30k註釋行和15k空白行。每個捕獲語句160k/350大約是467行代碼。良好的捕獲語句與代碼行之間的比率
但是,由於我們使用標準的C#格式化,並在它們自己的行上使用了大括號,所以誰知道160k中有多少行只是單個括號,而160k正在計算一些文件樹不再編譯到應用程序等等。我可能猜測「有用」比率接近每400 LOC的1個捕獲量。
至少不出乎意料,我們錯過了一個半關鍵的異常,它被捕獲到一個空的catch塊中,所以現在我正在通過代碼庫並至少打印出調試控制檯的異常作爲一種臨時措施,或者在抓到的例外方面變得更具體。這當然會增加我們在整個應用程序中的捕獲次數,但是它會使我們更接近「可接受」區域嗎?我不知道每467 LOC的1次捕獲是好還是好,甚至是可怕的。
我很瞭解 爲什麼不使用空的catch塊。其他/以前的維護者一直很懶。而且由於這個產品的下一個版本對時間要求很高,所以我現在沒有時間進入並正確地修復所有300(?)糟糕的捕獲聲明並驗證軟件的正確運行(當然,我們幾乎沒有自動化測試使這更容易:/)。
我只是在尋找是否有任何一種「直覺」,以至於應該多頻繁地看一次try-catches。有幾個答案說這是上下文敏感的,這是我所懷疑的,但不確定的。
空試塊本身並不是一個壞主意(即它們可以正確使用)。只有主程序員濫用它們,他們應該真正記錄錯誤並提供用戶反饋。 – Noldorin 2009-08-05 16:53:15
查看基於此的另一個問題,處理空try-catch塊:[爲什麼空catch塊是個壞主意?](http://stackoverflow.com/questions/1234343/why-are-empty-catch-blocks- A-壞主意)。 – Lode 2011-08-10 09:32:52
不贊同Noldorin,並會建議空的catch塊總是錯的。如果您確實想要完全忽略某種類型的問題,請以某種方式限定捕獲量,以便僅忽略您期望的錯誤類型。方法:catch(VerySpecificExceptionType ex){} >>或<< catch(Exception ex){if(ex.Message!=「我期望的東西」)throw; } >> 我打開反例,空的catch塊可能沒問題,但我很懷疑:) – pettys 2011-09-16 16:37:19