2013-09-30 81 views
2

我寫異常基於Visual C++ 2010的處理。這裏是程序正確執行代碼命令處理器已停止工作

#include <iostream> 
using namespace std; 

// Localize a try/catch to a function. 
void Xhandler(int test) 
{ 
    try{ 
    if(test) throw test; 
    } 
    catch(int i) { 
    cout << "Caught Exception #: " << i << '\n'; 
    } 
} 

int main() 
{ 
    cout << "Start\n"; 

    Xhandler(1); 
    Xhandler(2); 
    Xhandler(0); 
    Xhandler(3); 

    cout << "End"; 

    return 0; 
} 

代碼和輸出是作爲expected.But當我按下關閉關閉控制檯按鈕,然後一個錯誤來了cmd has stopped working Here is the image

。於是我跑我前面的是正確執行的代碼,他們也給了同樣的錯誤 。 有人可以告訴它爲什麼會發生這是Visual C++ 2010或代碼的問題

+0

你的'cmd.exe'被病毒感染:P – P0W

+0

@POW你是認真的嗎? – Freedom911

+0

隨着_「我跑我以前的代碼執行正常,他們也給了同樣的錯誤」_,我只能想到一個損壞的可執行文件。 Idk,等待一些答案 – P0W

回答

3

我認爲你的問題不在你的代碼中。問題出在您的編譯器工具鏈中。您可能正在使用Qt,並且工具鏈存在導致此問題的問題。 Google使用IDE崩潰時收到的消息。

這裏有一個簡單的實驗來證明我在說什麼:只需運行該代碼:

int main() 
{ 
    cout << "Start\n"; 


    cout << "End"; 

    return 0; 
} 

而且你的程序將會崩潰,這意味着你必須有例外或其他任何東西在你的代碼沒有問題,但用你的工具鏈。

+0

雖然程序顯示正確的結果並且在按任意鍵時成功結束,但是當我特意按關閉按鈕,然後這個錯誤來到 – Freedom911

+1

我知道,這就是爲什麼我告訴你,你的代碼不是問題。問題在於你的編譯器的工具鏈。確保你的編譯器配置正確。這是一個編譯器問題,而不是代碼問題。 –

+0

好的我明白了你的觀點,但問題突然出現了。我沒有改變任何編譯器設置 – Freedom911