2014-09-03 97 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

相关问题