try...catch如何知道错误具体在哪行,错误信息具体是啥呢?

解决方案 »

  1.   

    具体在哪行?不太好明确的反应,错误信息GetLastError
      

  2.   

    可以加一个变量记录当前行号,在try块里面每行后面都把当前行号赋值给该变量,当进入catch块时判断这个变量记录的行号值
      

  3.   

    一般放try catch的地方都是自己认为会出现异常的地方,注意这个地方怎么确认就是凭经验了。
      

  4.   

    给你一个简单的例子#include <stdio.h>
    #include <string>
    #include <sstream>class _CMyExp
    {
    public:
        _CMyExp(const std::string &strErrorMsg, const char * szFileName, size_t nLine)
        {
            std::stringstream sTmp;        sTmp << "ExpMsg:" << strErrorMsg << ". In File " << szFileName << " at Line " << nLine;        m_strErrorMsg = sTmp.str();
        }
    //private:
        std::string     m_strErrorMsg;
    };#define CMyExp(x)  _CMyExp(x, __FILE__, __LINE__)int main(int argc, char **argv)
    {
        try
        {
            if (9 == 9)
            {
                throw new CMyExp("uuu");
            }
        }
        catch (_CMyExp *e)
        {
            ::printf("%s\r\n", e->m_strErrorMsg.c_str());
            delete e;
        }
        return 0 ; 
    }
      

  5.   

        用catch来扑捉相应的异常,然后用getlasterror来查看异常是什么
      

  6.   

    一个疑惑:在使用GetLastError()来检查错误时,感觉有时候并不一定就是目标模块产生的。不知道,是我理解错误还是?