exception 질문입니다.
      글쓴이: nayana / 작성시간: 월, 2004/08/16 - 8:32오후    
  
  #include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include <exception>
using std::exception;
//------------------------------------------------------------
class DivideByZeroException : public exception
// - DivideByZeroException객체는 0으로 나누기 예외가 검출될때 
//------------------------------------------------------------
{
public:
    DivideByZeroException::DivideByZeroException()
        :exception( "attempted to divide by zero" ) { }
};
//------------------------------------------------------------
double quotient( int numerator, int denominator )
// - 나누기를 실행하고 만약 0으로 나누기 예외가 발생하면
// - DivideByZeroException객체 실행
//------------------------------------------------------------
{
	
    if ( denominator == 0 )
	{
		// - 0으로 나누기를 시도하면 DivideByZeroException객체 실행 
        throw DivideByZeroException();
	}
	// - 나누기 반환
    return static_cast< double >( numerator ) / denominator;
}
int main ( void )
{
    int    number1;
    int    number2;
    double result;
    cout << "Enter two integers ( end-of-file to end ): ";
    while ( cin >> number1 >> number2 )
    {
        try
        {
            result = quotient( number1, number2 );
            cout << "The quotient is: " << result << endl;
        }
        catch ( DivideByZeroException ÷ByZeroException )
		// - 예외처리가 0으로 나누기 예외를 처리 
        {
            cout << "Exception occured: "
                 << divideByZeroException.what() << endl;
        }
        cout << "\nEnter two integers( end-of-file to end): ";
    }
    cout << endl;
    return 0;
}
redhat 9.0에서 다음소스를 컴팡리 시켰더니..
다음과 같은 오류가 나옵니다.
fig.cpp: In constructor `DivideByZeroException::DivideByZeroException()': fig.cpp:15: no matching function for call to `std::exception::exception(const char[28])' /usr/include/c++/3.2.2/exception:51: candidates are: std::exception::exception(const std::exception&) /usr/include/c++/3.2.2/exception:53: std::exception::exception()
에러코드를 보니 exception이 없다고 나오는데....
vc++ 실행하니 아무 이상이 없습니다.
리눅스에서...exception 라이브러리(?)가 없는건지요...없다면...만들어서써야하겠지요^^
만들어 써야한다면..적절한 예제 부탁드립니다.
고수님들 답변 부탁드립니다.
Forums: 


CD2입니다.
18.6.1 Class exception [lib.exception]
namespace std {
class exception {
public:
exception() throw();
exception(const exception&) throw();
exception& operator=(const exception&) throw();
virtual ~exception() throw();
virtual const char* what() const throw();
};
}
http://www.itga.com.au/~gnb/wp/cd2/index.html
표준 exception ctor에는 c string을 받는 게 없군요.
char* what()을 적당히 override하세요.
___________________________________
Less is More (Robert Browning)
댓글 달기