41_运行错误的检测和输出

项目变大时,可能会出现一些意料之外的错误,这些错误的输出信息需要更加明确,可以让开发人员迅速知道哪里的问题。在日志类中添加错误输出信息。

windows下根据错误码输出错误信息的函数相较于linux下较为复杂。

CELLLog.hpp

static void PError(const char* pStr)
    {
        PError("%s", pStr);
    }

    template<typename ...Args>
    static void PError(const char* pformat, Args ... args)
    {
#ifdef _WIN32
        auto errCode = GetLastError();

        Instance()._taskServer.addTask([=]() {

            char text[256] = {};
            FormatMessageA(
                FORMAT_MESSAGE_FROM_SYSTEM,
                NULL,
                errCode,
                MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                (LPSTR)&text, 256, NULL
            );

            EchoReal(true, "PError ", pformat, args...);
            EchoReal(false,"PError ", "errno=%d,errmsg=%s", errCode, text);
        });
#else
        auto errCode = errno;
        Instance()._taskServer.addTask([=]() {
            EchoReal(true, "PError ", pformat, args...);
            EchoReal(true, "PError ", "errno<%d>,errmsg<%s>", errCode, strerror(errCode));
        });
#endif
    }

    static void Error(const char* pStr)
    {
        Error("%s", pStr);
    }

    template<typename ...Args>
    static void Error(const char* pformat, Args ... args)
    {
        Echo("Error ", pformat, args...);
    }

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top