Chinaunix首页 | 论坛 | 博客
  • 博客访问: 573699
  • 博文数量: 493
  • 博客积分: 2891
  • 博客等级: 少校
  • 技术积分: 4960
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-17 17:11
文章分类

全部博文(493)

文章存档

2010年(493)

分类:

2010-05-12 17:24:40

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) |
给主人留下些什么吧!~~