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

 

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM