C++ 在C+中,是否需要使用try-catch来执行delete[]或delete操作+;?

C++ 在C+中,是否需要使用try-catch来执行delete[]或delete操作+;?,c++,exception-handling,delete-operator,C++,Exception Handling,Delete Operator,我们正在VisualStudio2005中开发一个应用程序,在代码审阅中,我从审阅者那里得到了以下代码片段的问题 void FreeResourceForElements(void) { try { delete[] m_cpMemPool; } catch(...) { // statement for printing error message in log } } 正如审稿人所说,在C++语言中,删除或删除

我们正在VisualStudio2005中开发一个应用程序,在代码审阅中,我从审阅者那里得到了以下代码片段的问题

void FreeResourceForElements(void)
{
    try
    {
        delete[] m_cpMemPool;
    }
    catch(...)
    {
        // statement for printing error message in log
    }
}

正如审稿人所说,在C++语言中,删除或删除[]操作保证不抛出异常,因此这里不需要使用TestCcatch,catch块变成死代码。然而,当我在互联网上搜索任何标准参考资料以确认他的观点时,不幸的是,我找不到任何标准参考资料。所以我把这个问题放在这里。请告知。

删除[]调用每个数组元素的析构函数。如果您的代码库中有一条规则,即析构函数必须是
noexcept
,或者必须已经处理异常以防止它们从析构函数中传播出去(并且该规则实际上是强制执行的),则无需将
delete[]
包装在try-catch块中。

delete[]
调用每个数组元素的析构函数。如果您的代码库有一条规则,即析构函数必须是
noexcept
,或者必须已经处理异常以防止它们从析构函数中传播出去(并且该规则实际上是强制执行的),则无需将
delete[]
包装在try-catch块中。

析构函数不抛出,在C++中,以后的默认值是它们没有。但这仍然完全取决于手头的课程。因此,没有一个正式的保证,即<代码>删除>代码>不会被抛出,虽然可能并且很可能是这样一个实践保证。这是析构函数不抛出的一个常见约定,在C++中和后来的默认是它们没有。但这仍然完全取决于手头的课程。因此,没有正式的保证
delete
不会抛出,尽管实际上可以而且很可能会有这样的保证。感谢快速响应,如果数组对象的类型是内置类型(char),那么它是必需的吗?@VKrishnaRaoRacharla在这种情况下,它不能为快速响应抛出异常anks,如果数组对象的类型是内置类型(char),那么它是必需的吗?@VKrishnaRaoRacharla在这种情况下,它不能引发异常