오늘의../오늘의 뻘짓

[C#] 'TypeInitializationException이(가) 처리되지 않았습니다' 에러

dolhim 2016. 3. 3. 17:42

대부분의 오류나 예외는 메시지를 잘 살펴보면 어떻게 해결할지 답이 나온다.

처음엔 메시지를 봐도 이게 무슨말인가 했는데, 비슷한 예외가 자주 발생하다보니 이젠 잘 읽어보면 어떻게 해결해야할지 감이 잡힌다.


''OpenCVSharp.CPlusPlus.Mat'의 형식 이니셜라이저에서 예외를 Throw했습니다.'


[주의] 일반적인 해결방법이 아닐 수 있습니다.


먼저, 메시지에서 언급된 형식의 인자의 값을 잘못 넣었는지 확인한다.

(그럴 일 없겠지만..) null 이거나, 크기가 맞지 않거나 등등..

만약 잘 입력했는데도 예외가 발생한다면, 예외 창에서 '자세히 보기...' 버튼을 클릭한다.


'자세히 보기'창에 예외 정보가 자세하게 나와있다.

여기서, 처음 보이는 Exception안에 InnerException 을 계속해서 확장하면 다른 메시지가 나타난다. 


두둥..!


첫번째 메시지를 보면, Mat 형식의 인자에 어떤 문제가 있다는 건지 잘 몰랐었는데,

마지막 InnerException을 보면,

"DLL 'opencv_core2410'을(를) 로드할 수 없습니다. 지정된 모듈을 찾을 수 없습니다."

opencv_core2410.dll 파일을 찾을 수 없었기 때문이라는 것을 알 수 있다.

실행 경로에 해당 파일을 복사해주면 해결된다.


이 방법으로 모든 TypeInitializationException 예외을 처리할 수는 없을 것이다.

하지만, 반대로 다른 Exception을 처리할 수 있을지도 모른다. 안해봤지만 이렇게 적어두고 종종 InnerException을 참고할 예정 :)