3 结论:解决方案及效果
目前解决方案:
1、 MM服务重启问题产生的原因主要由于批量发布时使用的list.xml文件不符合模版要求,同时MM代码在处理XML文件时没有进行严密的空指针判断和完整的异常捕获处理。经过分析修改代码结果如下:
if (pRootNode == NULL)
{
MM_Common::TERMDEBUGMSG(MAX_ULONG, 1, "list.xml file has synatx errors."
"Please check whether labels matchs.");
sprintf(resultDescription,"list.xml file has synatx errors!Please check whether labels matchs!");
return retValue;
}
hr = pRootNode->get_firstChild(&pLogItem);
if (FAILED(hr))
{
return retValue;
}
do
{
if (pLogItem == NULL)
{
MM_Common::TERMDEBUGMSG(MAX_ULONG, 1, "list.xml file has synatx errors."
"Please check whether labels matchs.");
sprintf(resultDescription,"list.xml file has synatx errors!Please check whether labels matchs!");
return retValue;
}
//hr = pLogItem->get_previousSibling(&pPreviousNode);
hr = pLogItem->get_nextSibling(&pMediaNextNode);
if (FAILED(hr))
{
return retValue;
}
4 经验总结:预防措施和规范建议
1、对于做为函数的返回值在使用之前必须进行有效性检查。
2、在进行异常捕获处理时,对于系统的异常建议使用catch(...)于来处理所有未知的异常,避免捕获异常失败
阅读(412) | 评论(0) | 转发(0) |