강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

bona Kim님의 프로필 이미지
bona Kim

작성한 질문수

홍정모의 따라하며 배우는 C++

14.3 예외 클래스와 상속

질문입니다..!

작성

·

174

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

0

혹시 찾지 못하셨으면 다시 질문을 주셔도 됩니다.

0

doSomething 안의 throw는 어떤 catch가 받아야할까요?

bona Kim님의 프로필 이미지
bona Kim

작성한 질문수

질문하기