【发布时间】:2016-08-10 06:15:33
【问题描述】:
当我得到空指针时,有没有更好的方法来处理空点而不是MessageBox 并退出?我的老师告诉我这不是使用exit() 的好方法。这是我的代码:
CCheckBoxUI *pCbSwitch = static_cast<CCheckBoxUI*> (pItem->FindSubControl(_T("switch")));
ASSERT(pCbSwitch && "Failed to find contronl");
if (pCbSwitch == nullptr)
{
MessageBox(NULL, _T("Failed to find contronl"), _T("tip"), 0);
exit(-1);
}
【问题讨论】:
-
如果你不想调用exit,就不要。
-
你已经有了断言。你为什么要仔细检查?
-
您可以使用
return,这样您就可以在退出程序之前返回主函数进行一些清理(关闭文件处理程序等)。或者您可以编写一个错误处理函数来生成消息框、记录错误、进行清理并退出程序。 -
检查两次显然是错误的。只有一次。至于如何处理失败则由您决定。我们无法为您做出决定。
-
处理错误的众多方法之一是抛出异常并“捕获”它们。好处是,当它包含在 try {} catch () {} 块中时,您可以停止执行该块,并且可以在 catch() 块中处理异常。
标签: c++ winapi null-pointer