我正在使用switch语句来检查我正在创建的libzip zip存档中的错误代码的值。但是,它似乎永远不会返回0以外的任何内容,即使我故意失败也是如此。 (我试图将文件复制到100%已满的USB驱动器,导致它失败。)
我的用法如何不正确?
int error = 0;
zip_t * zip = zip_open(externalDevicePath.c_str(), ZIP_CREATE, &error);
zip_add_dir(zip,(institutionId + DIR_SLASH + userId).c_str());
string instAndUserPath = basePath + DIR_SLASH + institutionId + DIR_SLASH + userId;
string stbackupPath = basePath + DIR_SLASH + "STBackups";
ESFileUtilsCommon::addDirectoryToZip(instAndUserPath,zip,(institutionId + DIR_SLASH + userId).c_str());
ESFileUtilsCommon::addDirectoryToZip(stbackupPath,zip,"STBackups");
ESFileUtilsCommon::addDirectoryContentsToZip(basePath, zip);
zip_close(zip);
switch (error){
case ZIP_ER_OK:
mapper.setResult(RESULT_SUCCESS);
retval = CefV8Value::CreateString(mapper.getMappedJsonResponse());
return true;
break;
default:
mapper.setResult(RESULT_FAILURE);
retval = CefV8Value::CreateString(mapper.getMappedJsonResponse());
return false;
break;
}
答案 0 :(得分:1)
您尚未提供Minimal, Complete, and Verifiable example,因此我们无法测试您的代码。但是,由于您在error
之后很久检查zip_open
这一事实,我认为您对libzip中错误的工作方式感到困惑。
您传递给int error
的{{1}}仅对zip_open
, 之后的任何潜在错误负责。如果您想知道zip_open
是否有错误,您需要检查它自己的返回值,请参阅其文档:https://libzip.org/documentation/zip_dir_add.html。您还可以使用zip_dir_add
函数检查最新错误,请参阅文档:https://libzip.org/documentation/zip_get_error.html。