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方法手動拋出的異常,在日常調試中,這個才是我們想要的結果,我們想要清楚的知道具體的錯誤代碼行,以便准備無誤的解決錯誤。
歡迎任何形式的轉載,但請務必注明出處。
文案功底有限,碼字不易,不喜勿噴,如果文章和代碼有表述不當之處,還請不吝賜教。
