-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
질문입니다..!
20.08.02 01:13 작성 조회수 133
0
14.3강의 10:03 보다가 질문드려요.
class Exception
{
public :
void report()
{cerr << "Exception report" << endl;}
};
class ArrayException : public Exception
{
public :
void report()
{cerr <<"Array exception" << endl;}
};
class MyArray
{
private : int m_data[5];
public :
int & operator [] (int index)
{
if(index < 0 || index >=5) throw ArrayException()}
}
void doSomething()
{
MyArray my_array;
try {my_array[100];}
catch(ArrayException & e)
{ cout << "doSomething() " << endl;
throw e; }
}
int main()
{
doSomething();
try
{ doSomething();}
catch (ArrayException & e)
{ cout << "main()" << endl;
e.report(); }
이렇게 doSomething()함수 안에 catch(ArrayException & e)이 정의되어 있는 상태에서 e를 다시 rethrow를 해주고 실행시키면 main()함수의 첫 번째 doSomething()이 실행되고 디버깅 에러가 발생합니다. 아마 e를 다시 예외처리해주지 못하는것 같은데,왜 main()함수에 정의 된 catch (ArrayException & e)로 예외처리를 하지 못하고 에러가 나는 건지 궁금해요
답변을 작성해보세요.
답변 2