2015-07-11 56 views
0

我的宝贝朋友;为什么它不能在C++中捕捉异常?

为什么C++在这个例子中无法捕捉到异常?你能解释我们吗?我尝试了很多,但仍然不能。如果我在cmd中输入一个char,catch块不起作用。

try { 
    int dX = 0; 
    cin >> dX; 
    dX = static_cast<double>(10/dX); 
    cout << dX << endl; 
} 
catch (conts std::exception &exp) { // if I input any of chars, it doesn't catch? 
    cerr << "Error: " << exp->what() << endl; 
} 
+3

'的std :: istream'不上输入无效抛出异常,除非你明确告诉它这样做。 –

+2

一个也不会捕获指向异常的指针,而是一个引用。 –

+0

只需在@ BaummitAugen的(正确)声明 - [这里](http://archive.oreilly.com/pub/a/network/2003/05/05/cpluspocketref.html)中添加一个基本原理参考。 –

回答

0

你在做什么不会抛出异常,因此你能够捕捉任何东西。一个错误(也可能是一个较低级别的异常被抛出),但它不是你可以用处理程序管理的东西。

其他天吸引您的例外是这样的:

try 
{ 
} 
catch (const std::exception& error) 
{ 
// handler 
} 
+0

我无法理解:/ 当我在c#上编写例如下面的例子; C#总是抛出异常。 那么我能做什么上面的例子,以便在C++上工作?我怎么能捕捉到一个全局的异常,这是一直工作和每一个代码? c#example: try { \t string abc =“char test”; \t Conversion.ToInt(abc); (例外exp) { \t MessageBox.Show(exp.ToString()); } – ankebut