2012-10-05 2 views
0

예외()가있는 프로그램에서 입력을 테스트해야합니다. 다음 코드를 건설했고 나는 오류없이 컴파일 할 수cin 예외 테스트

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

     } 
     ... 
    }while(...) 

것은이 .... 나는이 코드를 테스트하는 방법을 잘 모릅니다. failbit 또는 badbit을 얻기 위해 입력 할 수있는 입력 유형은 무엇입니까?

+1

테스트 하시겠습니까? 예외 처리 코드를 테스트하려면'cin.setstate (istream :: failbit)'를 호출하면 예외가 발생하게됩니다. – msandiford

답변

0

이 (Error states of streams)에 따르면 failbit은 잘못된 입력 시퀀스에서 생성됩니다. 예를 들어 다음과 같이 작성하십시오. int n = 0; cin >> n; 그리고 number 대신에 string을 입력하십시오.

 

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

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

     } 
     return 0; 
    }