在尽可能多的地方加出错处理

今天遇到一个很奇怪的问题,自己写的一段代码已经测试过好多次了,一直也在用着它觉得这段代码已经是很稳定了。但是今天跟新了一下库结果这段代码变成了一个必死的代码,真的有点不相信自己的眼睛,但是死机已经摆在了眼前了没有办法还是得把这bug给找出来、、、、、、找来找去多感觉没有问题,哎、、、、、、最后终于发现原来是一个变量由于换了库初始值变量,导致给一个指针赋值时没有赋到使得指针指飞了。经过这次总结了一下几点:

1、switch...case...default语句结构中如果default中没有事可做那么就加个断言
2、if...else if如果你的思想是这两种情况肯定有一种情况存在的话那么你应该多加一个else
     来避免自己今天遇到的情况else里可以加个断言

if(pMonitorGuiFrame->gSysMod.gMonitorConfig.recSweepSpeed == 25)
{
        ItemDbCaption[3].pStrRightCaption = pMonitorGuiFrame->GetLangStr(IDS_DLG_SPEED_250);
}
else if(pMonitorGuiFrame->gSysMod.gMonitorConfig.recSweepSpeed == 50)
{
        ItemDbCaption[3].pStrRightCaption = pMonitorGuiFrame->GetLangStr(IDS_DLG_SPEED_500);
}
else  //避免指针指飞
{
    assert(FALSE);
}

switch(pMonitorGuiFrame->gSysMod.gMonitorConfig.recRTMode)
{
        case 8:
            ItemDbCaption[4].pStrRightCaption = pMonitorGuiFrame->GetLangStr(IDS_COM_TIME_8S);
            break;
        case 16:
            ItemDbCaption[4].pStrRightCaption = pMonitorGuiFrame->GetLangStr(IDS_COM_TIME_16S);
            break;
        case 32:
            ItemDbCaption[4].pStrRightCaption = pMonitorGuiFrame->GetLangStr(IDS_COM_TIME_32S);
            break;
        case 120:
            ItemDbCaption[4].pStrRightCaption = pMonitorGuiFrame->GetLangStr(IDS_COM_TIME_CONTINUAL);
            break;
        default:
         assert(FALSE);
            break;
}

在尽可能多的地方加出错处理

时间: 2024-10-25 01:55:09

在尽可能多的地方加出错处理的相关文章

APP中数据加载的6种方式-b

我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数据加载等待,甚至在无网络的时候,整个处于不可用状态.那么我们怎么处理好界面交互中的加载设计,保证体验无缝衔接,保证用户没有漫长的等待感,而可以轻松自在的享受等待,对加载后的内容有明确的预期呢? 设计师在进行APP设计的设计时,往往会更加专注于界面长什么样,界面和界面之间怎么跳转,给予用户什么样的操作反馈,却偏偏特别容易忽略掉一个比较重要的环节,就是APP数据加载中的设计,所以会导致我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数

[转]6种常见的数据加载模式设计

原文链接:http://elya.cc/2014/03/31/loading/ 设计师在进行APP设计的设计时,往往会更加专注于界面长什么样,界面和界面之间怎么跳转,给予用户什么样的操作反馈,却偏偏特别容易忽略掉一个比较重要的环节,就是APP数据加载中的设计,所以会导致我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数据加载等待,甚至在无网络的时候,整个处于不可用状态.那么我们怎么处理好界面交互中的加载设计,保证体验无缝衔接,保证用户没有漫长的等待感,而可以轻松自在的享受等待,对加载后的

Android 插件化原理解析——插件加载机制

上文 Activity生命周期管理 中我们地完成了『启动没有在AndroidManifest.xml中显式声明的Activity』的任务:通过Hook AMS和拦截ActivityThread中H类对于组件调度我们成功地绕过了AndroidMAnifest.xml的限制. 但是我们启动的『没有在AndroidManifet.xml中显式声明』的Activity和宿主程序存在于同一个Apk中:通常情况下,插件均以独立的文件存在甚至通过网络获取,这时候插件中的Activity能否成功启动呢? 要启动

iOS APP中数据加载的6种方式

我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数据加载等待,甚至在无网络的时候,整个处于不可用状态.那么我们怎么处理好界面交互中的加载设计,保证体验无缝衔接,保证用户没有漫长的等待感,而可以轻松自在的享受等待,对加载后的内容有明确的预期呢? 设计师在进行APP设计的设计时,往往会更加专注于界面长什么样,界面和界面之间怎么跳转,给予用户什么样的操作反馈,却偏偏特别容易忽略掉一个比较重要的环节,就是APP数据加载中的设计,所以会导致我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数

高性能javascript 文件加载阻塞

高性能javascript javascript脚本执行过程中会中断页面加载,直到脚本执行完毕,此操作阻塞了页面加载,造成性能问题. 脚本位置和加载顺序:如果将脚本放在head内,那么再脚本执行完毕之前,显示给用户的始终是一片空白,用户只能傻傻的看着屏幕等待脚本执行完毕.而且,如果页面引入多个脚本,那么后面的脚本文件必须等待前面的脚本文件下载完毕并且执行完毕之后才能开始下载并运行.不过IE8,FF,SAFARI,CHROME已经允许脚本文件可以同时下载,不过尽管如此,javascript脚本仍然

css加载会造成阻塞吗?

之前面试今日头条的时候,今日头条面试官问我,js执行会阻塞DOM树的解析和渲染,那么css加载会阻塞DOM树的解析和渲染吗?所以,接下来我就来对css加载对DOM树的解析和渲染做一个测试.为了完成本次测试,先来科普一下,如何利用chrome来设置下载速度 打开chrome控制台(按下F12),可以看到下图,重点在我画红圈的地方 点击我画红圈的地方(No throttling),会看到下图,我们选择GPRS这个选项 这样,我们对资源的下载速度上限就会被限制成20kb/s,好,那接下来就进入我们的正

图片未加载完成时预测图片尺寸

/***************************************************************************************     * 图片头数据加载就绪获取图片尺寸     * @version    2011.05.27     * @author    TangBin     * @see             * @param    {String}    图片路径     * @param    {Function}    尺寸就

UIImage加载图片的方式以及Images.xcassets对于加载方法的影响

图片缓存 根据是否将创建好的对象缓存入系统内存,有两类创建UIImage对象的方法可选: 缓存:+ imageNamed:,只需传入文件名.扩展名(可选)即可. 不缓存:+ imageWithContentsOfFile:,必须传入文件的全名(全路径+文件名). 注意,对于有缓存功能的方法来说,其创建对象的步骤如下: 根据图片文件名在缓存池中查找特定的UIImage对象,若存在这个对象,将此对象返回. 如果不存在这个对象,则从mainBundle中加载图片数据,创建对象并返回. 如果相应的图片数

CI框架加载library下面的类

我第一次加载失败,原来是文件名和类名不同的原因,先总结关于CI加载你自己的类文件注意事项: 1.第三方加载文件应放在application/libraries文件下 2.文件名和类名应该相同,并且首字母大写,比如说文件名Excel.php  类名应该为Excel 3.通过$this->load->library('类');方式在你需要的地方加载 4.也可以在application/config/autoload.php中加载,在文件中加上$autoload['libraries'] = arr