c ++ - _mkdir给出错误的错误窗口

时间:2016-09-10 21:00:00

标签: c++ error-handling mkdir errno

您好我正在尝试使用此代码在Windows中创建一个目录

#include <direct.h>

脚本

int main() {
    string local = "C:/Program Files (x86)/Mail";   

    try
    {
        _mkdir (local.c_str ());
        cout << "It is made?";
    }

    catch(invalid_argument& e)
    {
        cout << e.what () << " " << (char*) EEXIST;
        if (e.what () == (char*) EEXIST) {
            cout << e.what () << " " << (char*) EEXIST;
        }
        return;
    }
}

显然没有制作文件,但它也没有制作the error it should.

2 个答案:

答案 0 :(得分:0)

_mkdir不会抛出异常。 (这不是python或boost,或任何智能中间件)

阅读您所指的文档:它返回一个值。 0表示正常,-1:错误,请问为什么errno

不要忽略返回值。如果没有UAC提升,您可能没有足够的权限来创建目录。

答案 1 :(得分:0)

所以我终于想出了errno out,这对于errno你需要标题(至少在windows上)&lt; errno.h中取代。 errno codes

的完整列表

如果你想知道什么是错误代码,可以说是

if (
    _mkdir(((string)"C:/Program Files (x86)/Mail").c_str()) == 0 ||
    errno == 17 /* this is the code for - File exists - */
){
    // Do stuff

} else {
    int errorCode = errno; // You need to save the code before anything else,
                           //    becuase something else might change its value
    cout << errorCode;
}

这适用于Windows,我不确定是否有可以同时移植的库(如果有人知道请分享)。

不重要/咆哮 -

我注意到Linux文档/用户解释这些事情的一件事是,一切都变得复杂。我的意思是,我们都对你的语言知识印象深刻,除了计算机科学专业的人都知道,但显然有更简单的方法来解释事物,就像freecodecamp那样,或者是kahn学院。