2015-07-11 55 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