错误检查

来源:互联网 发布:oracle 字段sql 死锁 编辑:程序博客网 时间:2024/04/30 05:09

昨天写代码遇到一个问题:该不该进行错误检查? 拿来抛砖引玉,请资深的童鞋来指点一下。


1、案例分析

string makePolygonBlockId(float location, uint64_t scale){    if (fabs(location-INVALID_POSITION) < FLOAT_ZERO)      return "";    uint64_t scaleFlag = _getScaleFlag(scale);    if (scaleFlag == 0)      return ""     uint64_t xm = (location.first+180)*LON_LAN_TO_M;     uint64_t blockId = scaleFlag + (xm/scale)*LON_BIT;        char str_blockId[MAX_POLYGON_BLOCK];    snprintf(str_blockId, MAX_POLYGON_BLOCK, "%llx", blockId);    return string(str_blockId);}

第14行snprintf要不要进行错误检查?

孤舟分析:

    1、根据上文代码,已经确保blockId是一个数值型变量

    2、64位整型值转十六进制字符串,长度占17个字节('\0'), str_blockId[MAX_POLYGON_BLOCK]已保证

        所以,不需要错误检查。str_blockId所在的内存损坏应该不会出现,OS会检错兼容,如果真要出错,那就是CPU疯了,错误检查也没什么意义。所以我觉得不需要错误检查了。

例子很小,不知道自己现在的分析的有没有道理,请有经验的童鞋,给些指点。

2、错误检查

        1、要明确列举可能出现的错误类型

        2、判断在当前上下文环境下,可能出现此错误吗

        3、重点关注有IO代码段的检查(磁盘IO,网络IO,进程交互的地方),和 用户输入的参数的检查


请有经验的同学,过来讨论指点下。



0 0
原创粉丝点击