1. 程式人生 > >c# throw和throw ex

c# throw和throw ex

拋出異常 常開 clas 代碼 .cn 自己 space spa csharp

原文:c# 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方法手動拋出的異常,在日常調試中,這個才是我們想要的結果,我們想要清楚的知道具體的錯誤代碼行,以便準備無誤的解決錯誤。

歡迎任何形式的轉載,但請務必註明出處。

文案功底有限,碼字不易,不喜勿噴,如果文章和代碼有表述不當之處,還請不吝賜教。

c# throw和throw ex