2012-10-05 144 views
0

我應該在程序中用異常()來測試輸入。 我已經構造了下面的代碼,並沒有錯誤,我可以編譯:測試cin異常

cin.exceptions(istream::failbit |istream::badbit); 
    do 
    { 
     try 
     { 
      getline(cin,uppg); 
     } 
     catch(istream::failure e) 
     { 
      cerr << "Exception i inläsning"; 

     } 
     ... 
    }while(...) 

的事情是....我不知道如何來測試該代碼。我可以寫什麼類型的輸入來獲得失敗位或錯誤位?

+1

你想測試什麼?如果你想測試你的異常處理代碼,你可以調用'cin.setstate(istream :: failbit)'這會引發異常。 – msandiford

回答

0

根據這個(Error states of streams)failbit在錯誤的輸入序列上產生。例如,你寫了如下: int n = 0; cin >> n;並輸入字符串而不是數字。

 

    int main(void) 
    { 
     int n = 0; 
     cin.exceptions(istream::failbit | istream::badbit); 

     try 
     { 
      cin >> n; 
     } 
     catch(istream::failure e) 
     { 
      cerr << "Exception" << endl; 

     } 
     return 0; 
    }