🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

질문입니다..!

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

·

답변을 작성해보세요.

0

Hello Yeo님의 프로필

Hello Yeo

2020.08.05

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

0

Hello Yeo님의 프로필

Hello Yeo

2020.08.02

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

채널톡 아이콘