忙起来就不顾规范,只是一味的求快。
写下如下代码:
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条件不为真,不能处理异常所以程序崩溃。
教训:一定要想好处理每个分支语句的情况。对每一种情况进行处理。