我对机器代码不太熟悉,但我认为这是一个非常简单的问题 如果我想通过函数返回的整数进行错误处理(而不是抛出异常的函数),那么从机器代码的角度来看,更好的做法是:
例如,在C ++中:
enum error_code {E_GOOD, E_BAD, E_UGLY};
error_code func_b();
选项1
void func_a()
{
error_code err_catch = func_b();
if (err_catch)
{
switch (err_catch)
{
case E_BAD:
/* Handle bad case */
break;
case E_UGLY:
/* Handle ugly case */
break;
}
}
}
选项2
void func_a()
{
error_code err_catch = func_b();
switch (err_catch)
{
case E_GOOD:
break;
case E_BAD:
/* Handle bad case */
break;
case E_UGLY:
/* Handle ugly case */
break;
}
}
感谢您的帮助。
答案 0 :(得分:1)
第一次测试应该是:
if (err_catch != E_GOOD)
明确指出'发生错误'。顺便说一句,您的代码看起来像是通过C ++编译器。 C不会使用前面的error_code
创建类型enum
;你必须添加:
typedef enum error_code error_code;
在生成的代码方面,两者之间的差别很小。
我可能会使用选项1(if
表示法)只是为了清楚地表明交换机只处理错误情况(因为它只需处理错误情况),但我不反对如果它被呈现给我进行代码审查。
答案 1 :(得分:1)
对于enum
类型,我会直接使用switch
语句,以便编译器可以确保switch
语句真正处理所有可能的值。