c# throw和throw ex 我們在日常開發當中,經常會用到exception異常,並且我們會在exception中的catch塊中throw exception,例如: 但是大家是否清楚在catch塊中 throw和throw ex的區別呢?在一次電話面試中,面試官就問到這個問題了,當時沒有 ...
c# throw和throw ex
我們在日常開發當中,經常會用到exception異常,並且我們會在exception中的catch塊中throw exception,例如:
static void M3() { try { //你的業務代碼 } catch (Exception ex) { throw ex; } }
但是大家是否清楚在catch塊中 throw和throw ex的區別呢?在一次電話面試中,面試官就問到這個問題了,當時沒有答上來,
事後經過測試才知道兩者的區別,其實只要自己測試一下,就知道兩者之間的區別了,測試代碼:
1. throw ex 測試
using System; namespace MuzizMH.Test { class Program { static void Main(string[] args) { M2(); } static void M1() { throw new Exception("M1 Exception"); } static void M2() { try { M1(); } catch (Exception ex) { throw ex; } } } }
在main函數中明顯會拋出異常,但是請註意異常信息:
錯誤信息行號分別為:24和8
2. throw 測試
錯誤信息行號分別為:13、24和8
總結:相比上面的測試結果,測試2的結果多出了一個行號,也就是M1方法手動拋出的異常,在日常調試中,這個才是我們想要的結果,我們想要清楚的知道具體的錯誤代碼行,以便準備無誤的解決錯誤。
歡迎任何形式的轉載,但請務必註明出處。
文案功底有限,碼字不易,不喜勿噴,如果文章和代碼有表述不當之處,還請不吝賜教。