程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中使用throw和throw ex拋出異常的區別,

C#中使用throw和throw ex拋出異常的區別,

編輯:C#入門知識

C#中使用throw和throw ex拋出異常的區別,



 

通常,我們使用try/catch/finally語句塊來捕獲異常,就像在這裡說的。在拋出異常的時候,使用throw和throw ex有什麼區別呢?


假設,按如下的方式調用幾個方法:

 

→在Main方法中調用Method1方法,try/catch捕獲異常
→在Method1方法中調用Method2方法,try/catch捕獲異常
→在Method2方法中故意拋出異常,try/catch捕獲異常

 

使用throw拋出異常


 

       static void Main(string[] args)
        {
            try
            {
                Method1();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace.ToString());
                
            }
            Console.ReadKey();
        }
        static void Method1()
        {
            try
            {
                Method2();
            }
            catch (Exception ex)
            {
                
                throw;
            }
        }
        static void Method2()
        {
            try
            {
                throw new Exception("來自方法2的異常");
            }
            catch (Exception ex)
            {                
                throw;
            }
        }

 

可以看到,使用throw拋異常,把發生在Method2方法、Method1方法和Main方法中的異常全部拋了出來。


使用throw ex拋出異常

 

現在,在Method1方法中,使用throw ex拋出異常。


        static void Method1()
        {
            try
            {
                Method2();
            }
            catch (Exception ex)
            {
                
                throw ex;
            }
        }

 

  

 

可見, 使用throw ex拋異常,只會把Method1方法和Main方法中的異常拋出來。

 

總結:如果想獲取最完整的StackTrace信息,使用throw拋出異常,從中可以知道異常到底來自哪個方法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved