2012-12-26 263 views
0

新方式(異常拋出)v.s老方法(錯誤號)的缺點和優點是什麼。拋出異常(C#)返回錯誤號

我總是聽說老一輩的程序員說錯誤代碼返回更健壯和可控,而異常拋出在調試時很好。

哪一種編程更好?

回答

3

異常會爲您提供更多上下文信息,如堆棧跟蹤對於在開發過程中以及在生產系統中記錄異常詳細信息時診斷問題都很有用。

沒有理由不使用這兩種方法。您可以使用錯誤代碼屬性定義您自己的異常類型,也可以編寫一個包裝來從data collection中提取錯誤編號。

2

當你使用異常的時候,你可以跟蹤生成異常的執行路徑,因此這非常適合調試,而且現代編程語言也有一些特徵(如try/catch塊) 來操縱異常,所有這適用於調試。

0

在java或c#中使用錯誤返回碼,如果使用異常是一個選項,則會創建錯誤的代碼。

這將混合兩個不同的東西,錯誤處理和正常流程。

在現代編程語言中,不要使用返回值來表示錯誤狀態,錯誤的操作,錯誤的樣式和簡單的愚蠢。

如果有人覺得有必要爭論這個,請通過舉例或參考文獻的方式來做,而不僅僅是斷言。

+1

我從來沒有聽說過一種規則,規定「不要使用返回代碼來表示現代語言中的錯誤代碼」,所以說它總是產生錯誤的代碼是錯誤的。當然,例外會給你更多的細節,但每個功能都有一個時間和地點。而且你沒有任何示例/引號,所以我沒有看到需要與他們對抗:) –

+0

也許這是一個跡象表明你需要閱讀更多。 IDesigns中的規則20 C#編碼標準狀態: 「避免將錯誤代碼作爲方法返回值」。 現在請顯示任何類型的文學參考或例子,使用錯誤代碼作爲返回值,並沒有設計得不好的代碼。請記住OP將這個問題作爲一個/或命題提出。通常,設計具有代表錯誤代碼的「某些東西」是很好的設計,但這不是問題所在:它是關於是否使用異常或錯誤返回代碼。後者是現代語言中明顯錯誤的選擇。 –