2014-09-03 91 views
2

但是這僅僅是從標準::異常派生的異常。 我想知道如果有一種方法可以得到一個省略號抓CPP:catch異常有省略號,看看我知道你能趕上「所有異常」,並</p> <pre><code>try { //some code... }catch(const std::exception& e) { cout << e.what(); } </code></pre> <p>打印異常信息

try 
{ 
    //some code... 
}catch(...) { 
    // ?? 
} 

一些信息,如果該機制是一樣的省略號的功能那麼我應該能夠做到像鑄造va_list的參數,試圖調用what()方法。

我還沒有嘗試過,但如果有人知道我會很興奮,知道如何。

+0

你有沒有想過如何在s.o.上調用int上的what()。拋出一個? – Christophe 2014-09-03 11:14:06

+0

顯然,我建議不會總是工作。我正在尋找一種方法從中得到一些東西。 – ZivS 2014-09-03 11:37:45

回答

2

對不起,你不能這樣做。對於特定的異常類型,您只能訪問catch塊中的異常對象。

3

從C++ 11日起,您可以使用std::current_exception & C:

std::exception_ptr p; 
try { 

} catch(...) { 
    p = std::current_exception(); 
} 

然後,您可以 「考察」 p通過服用蒙上&℃。

在早期的標準中,在catch(...)網站上沒有檢查異常的便攜方式。

+1

你寫的'&c'是什麼? – ZivS 2017-07-25 12:12:02

+0

https://zh.wiktionary.org/wiki/%26c。我是一隻老式的貓。 – Bathsheba 2017-07-25 12:17:11

+0

這對我來說是新的(&c):) 你可以在你的回答中顯示你可以用這個'exception_ptr'做什麼(有什麼優勢)? – ZivS 2017-07-26 05:59:22

相關問題