[완료]C++ 에러처리 관련 질문입니다.

ag315의 이미지

C++ 에러처리 관련하여
함수 안에서 그냥 throw 하는것 하고..
함수 선언부에 throw 가 붙어있는경우 어떻게 다른가요?
아래는 테스트를 위해서 간단하게 만든겁니다.

func1() 과 func2() 는 무슨차이가 있는걸까요?

class Exception {
private:
	int ErrorNum;
public:
	Exception(int a) : ErrorNum(a) {}
	void PrintError() {
		cout << ErrorNum << " is generated !!!" << endl;
	}
};
 
void func1() {
	throw Exception(1);
}
 
void func2() throw(Exception) {
	throw Exception(2);
}
 
int main() {
	try {
		if (time(NULL) % 2 == 0)
			func1();
		else
			func2();
	} catch (Exception &e) {
		e.PrintError();
	}
 
	return 0;
}
winner의 이미지

쓰는 사람한테 이런 예외가 날라갈 수 있으니 준비하라는 그런 표식.
또 한가지는 지정해 놓은 예외가 아닌 다른 예외는 치명적 오류이니 그대로 종료된다는... 그걸 붙잡는 함수는 공부하시면 나옵니다. ^_^

ag315의 이미지

답변 감사합니다.
문서를 읽다보니까 답이 나오더군요.
뒷쪽에 나오는 내용인데 선급하게 질문을 드렸더라구요.^^