如果unique_ptr自定义删除器出现错误或失败会发生什么情况以及如何检查呢?

时间:2017-04-21 03:23:01

标签: c++ error-handling unique-ptr

我已经全神贯注,无法找到一个好的答案 - 也许没有使用正确的搜索字词 - 所以 - 如何检查unique_ptr的自定义删除器是否失败,你如何处理错误?我试图通过创建ZipArchive类来包装libzip。在libzip中,使用以下函数关闭文件:

int zip_close(zip_t* archive);

成功时返回0,失败返回-1,并在" archive"中设置错误条件。我知道这很容易用原始指针完成,但我试图使用unique_ptr:

typedef std::unique_ptr<zip_t, int(*)(zip_t*)> UniqueArchive;

以后

mArchive = UniqueArchive(pointer_to_archive, zip_close);

(mArchive是ZipArchive类的私有成员)

稍后,当ZipArchive被销毁并且清理了mArchive时,你会如何制作它以便检查zip_close是否成功?现在我可以想到将zip_close包装在一个有一些错误处理的函数中 - 可能会抛出一个异常,但你怎么能检查呢?如果出现错误,那么它会从析构函数中抛出一个异常吗?

无论如何 - 希望我的问题有意义 - 感谢任何指导!

0 个答案:

没有答案