忙起来就不顾规范,只是一味的求快。
写下如下代码:
enum FooState{
FOOONMOUNTAIN,
FOOONPLANET,
//FOONOWHERE,
};
enum FooState queryFooLocation()
{
if (...)
{
return FOOONMOUNTAIN;
}
if (...)
{
return FOOONPLANET;
}
//return FOONOWHERE
};
int main()
{
enum FooState foostate;
foostate = queryFooLocation();
if (foostate!=FOOONMOUNTAIN&&foostate!=FOOONPLANET)
//if(foostate==FOONOWHERE)
{
//do something for the repaire
}
}
编译后出没有遍历所有的分支,有可能不会return .
刚开始并没有注意,Debug的情况enum 可能有一个默认值,所以当main中出现不是
FOOONMOUNTAIN,和FOOONPLANET 的情况
防御措施:if (foostate!=FOOONMOUNTAIN&&foostate!=FOOONPLANET)是为真的
所以可以正常处理异常情况。
但是由于Release下直接赋予FOOONMOUNTAIN,FOOONPLANET其一,所以当发生
异常时if条件不为真,不能处理异常所以程序崩溃。
教训:一定要想好处理每个分支语句的情况。对每一种情况进行处理。
本文通过一个关于枚举类型的示例代码,讲述了在程序设计中如何确保所有分支都被正确处理的重要性。文章强调了在Debug与Release模式下进行充分测试的必要性,并分享了因未考虑所有情况而导致程序崩溃的经验教训。
525

被折叠的 条评论
为什么被折叠?



