기타 학습/Error
[Error] 처리되지 않은 예외 발생(0x75EEA6E2, Project.exe): Microsoft C++ 예외: char, 메모리 위치 0x0053F710.
sdoaolo
2021. 6. 1. 17:16
728x90
visual studio에서 try-catch 관련 코드를 빌드했는데 다음과 같은 에러가 나왔다.
처리되지 않은 예외 발생(0x75EEA6E2, Project.exe): Microsoft C++ 예외: char, 메모리 위치 0x0053F710.
<에러난 코드>
#include <iostream>
using namespace std;
void func(int n){
try{
if(n >0)
throw "positive";
else if(n == 0)
throw "zero";
else
throw "negative";
}
catch (char * s){
cout << s << endl;
}
}
int main(){
func(5);
func(0);
func(-5);
cout << endl;
getchar();
return 0;
}
알아본 결과,
throw를 하는 값은 문자열 리터럴이고, catch하는 값은 <std::string> 형식이기 떄문에 발생한 문제이다.
<std::string>은 문자열 리터럴에서 구성될 수는 있지만, catch절에서 허용되지 않는다.
해결방법
catch 하는 값 형식에 const를 추가한다.
catch (const char * s){ } |