C#使用throw和throw?ex拋出異常的區(qū)別介紹
通常,我們使用try/catch/finally語(yǔ)句塊來(lái)捕獲異常,就像在這里說(shuō)的。在拋出異常的時(shí)候,使用throw和throw ex有什么區(qū)別呢?
假設(shè),按如下的方式調(diào)用幾個(gè)方法:
→在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("來(lái)自方法2的異常"); } catch (Exception ex) { throw; } }
可以看到,使用throw拋異常,把發(fā)生在Method2方法、Method1方法和Main方法中的異常全部拋了出來(lái)。
使用throw ex拋出異常
現(xiàn)在,在Method1方法中,使用throw ex拋出異常。
static void Method1() { try { Method2(); } catch (Exception ex) { throw ex; } }
可見(jiàn), 使用throw ex拋異常,只會(huì)把Method1方法和Main方法中的異常拋出來(lái)。
總結(jié):如果想獲取最完整的StackTrace信息,使用throw拋出異常,從中可以知道異常到底來(lái)自哪個(gè)方法。
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
C# winform 模擬鍵盤輸入自動(dòng)接入訪問(wèn)網(wǎng)絡(luò)的實(shí)例
本篇文章主要介紹了C# winform 模擬鍵盤輸入自動(dòng)接入訪問(wèn)網(wǎng)絡(luò),有興趣的可以了解一下。2016-11-11C# Winform下載文件并顯示進(jìn)度條的實(shí)現(xiàn)代碼
本來(lái)是要研究怎樣判斷下載完成,結(jié)果找到這個(gè)方法,可以在這個(gè)方法完成之后提示下載完成,需要的朋友可以參考下2014-07-07C#實(shí)現(xiàn)動(dòng)態(tài)加載dll的方法
這篇文章主要介紹了C#實(shí)現(xiàn)動(dòng)態(tài)加載dll的方法,涉及針對(duì)動(dòng)態(tài)鏈接庫(kù)的靈活操作技巧,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12C#請(qǐng)求唯一性校驗(yàn)支持高并發(fā)的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于C#請(qǐng)求唯一性校驗(yàn)支持高并發(fā)的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10C#開發(fā)紐曼USB來(lái)電小秘書客戶端總結(jié)
這篇文章主要介紹了C#開發(fā)紐曼USB來(lái)電小秘書客戶端總結(jié),對(duì)于C#項(xiàng)目開發(fā)來(lái)說(shuō)有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-08-08