C#使用throw和throw?ex拋出異常的區(qū)別介紹
通常,我們使用try/catch/finally語句塊來捕獲異常,就像在這里說的。在拋出異常的時候,使用throw和throw ex有什么區(qū)別呢?
假設(shè),按如下的方式調(diào)用幾個方法:
→在Main方法中調(diào)用Method1方法,try/catch捕獲異常
→在Method1方法中調(diào)用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拋異常,把發(fā)生在Method2方法、Method1方法和Main方法中的異常全部拋了出來。
使用throw ex拋出異常
現(xiàn)在,在Method1方法中,使用throw ex拋出異常。
static void Method1() { try { Method2(); } catch (Exception ex) { throw ex; } }
可見, 使用throw ex拋異常,只會把Method1方法和Main方法中的異常拋出來。
總結(jié):如果想獲取最完整的StackTrace信息,使用throw拋出異常,從中可以知道異常到底來自哪個方法。
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
C# winform 模擬鍵盤輸入自動接入訪問網(wǎng)絡(luò)的實例
本篇文章主要介紹了C# winform 模擬鍵盤輸入自動接入訪問網(wǎng)絡(luò),有興趣的可以了解一下。2016-11-11C# Winform下載文件并顯示進度條的實現(xiàn)代碼
本來是要研究怎樣判斷下載完成,結(jié)果找到這個方法,可以在這個方法完成之后提示下載完成,需要的朋友可以參考下2014-07-07