我正在使用FMOD Core API在C ++中制作mp3播放器类。我将原始FMOD::System
指针包装在我想用来实现RAII的System
类中。我在构造函数中创建并初始化该句柄,然后在析构函数中将其释放。不幸的是,所有三个功能FMOD::System_Create
,System::init()
和System::release()
都可能失败。
我有一些问题:
在构造函数中,如果System::init
失败,我将不得不使用System::release()
清理资源,这也会失败。那我该怎么办?在构造函数内引发异常,该异常会显示错误消息并调用exit(EXIT_FAILURE)
?
如果System::release()
在析构函数中失败怎么办?我也一样吗?这是好习惯吗?
在这种情况下,我还要使用RAII吗?如果没有,我该怎么办?
我知道StackOverflow上有很多关于构造函数/析构函数失败的帖子。但是似乎没有人得出结论或适用于我的特定情况。