처리되지 않은 예외의 원인 확인
예외 처리에서는 예외의 원인을 정확히 찾아내기 위해 줄 번호와 소스 파일 이름을 포함하는 것이 일반적입니다. 예외. 예외가 수동으로 생성되면 이 정보를 쉽게 추가할 수 있습니다. 그러나 처리되지 않은 예외와 명시적으로 발생하지 않은 예외는 문제가 될 수 있습니다.
매크로와 함께 사용자 정의 예외 클래스 사용
이러한 제한을 극복하기 위한 보다 강력한 솔루션은 다음과 같습니다. 사용자 정의 예외 클래스와 매크로를 사용합니다. 다음 C 코드는 이를 달성하는 방법을 보여줍니다.
#include <iostream> #include <sstream> #include <stdexcept> #include <string> class my_exception : public std::runtime_error { std::string msg; public: my_exception(const std::string &arg, const char *file, int line) : std::runtime_error(arg) { std::ostringstream o; o << file << ":" << line << ": " << arg; msg = o.str(); } ~my_exception() throw() {} const char *what() const throw() { return msg.c_str(); } }; #define throw_line(arg) throw my_exception(arg, __FILE__, __LINE__);
사용 예
사용자 정의 예외 클래스와 매크로를 사용하면 처리되지 않은 예외를 캡처하고 출처는 정확히 명시되어 있습니다:
void f() { throw_line("Oh no!"); } int main() { try { f(); } catch (const std::runtime_error &ex) { std::cout << ex.what() << std::endl; } }
이 코드가 실행되면 다음과 같은 오류 메시지가 나타납니다. 인쇄됨:
myFile.cpp:255: Oh no!
예외가 발생한 파일과 줄 번호를 명확하게 식별하여 문제 디버깅 및 해결을 위한 귀중한 정보를 제공합니다.
위 내용은 C에서 처리되지 않은 예외의 원인을 정확히 찾아내는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!