2017-04-10 62 views
0

我想使用Enum作为错误处理,但我不知道这是否可行。C++使用枚举来处理错误

举例来说,如果我有这样的枚举:

enum ErrorNum : char{ 
    ID_ERROR 
}; 

我要检查这个ID_ERROR,并根据该错误,显示的描述或其他。所以,我真的不知道应用程序中会有多少错误。

我会举一个例子。如果算法不能在房间中放置床,则必须返回ID_ERROR 100和X描述的错误。

但我不知道应用程序中会有多少错误,所以我不知道这个枚举是否应该是动态的。

我会发布一些代码,但我真的不知道如何处理它。

这可能吗?

+1

可能。你将不得不围绕你的想法编写一些代码。认真:你的真实*问题是什么? – GhostCat

+0

是的,这是可能的。这是C中错误处理的流行机制。在C++中,请考虑使用异常。 –

+0

我只是编辑了这个问题,可能现在你可以理解它:) – James

回答

0

如果你想使用enum错误处理,你应该有一个每enum值错误类型

enum class outcome 
{ 
    success, 
    error_explosion, 
    error_caught_fire 
}; 

outcome do_something() { /* return appropriate outcome */ } 

int main() 
{ 
    switch(do_something()) 
    { 
     case outcome::success: 
      std::cout << "Success!\n"; 
      break; 
     case outcome::error_explosion: 
      std::cout << "ERROR: the computer exploded\n"; 
      break; 
     case outcome::error_caught_fire: 
      std::cout << "ERROR: the computer caught fire\n"; 
      break; 
    } 
} 
1

是的,它是可能的,只是把它变成你的函数

的返回类型
enum ErrorNum : char{ 
    NO_ERROR, 
    ERROR_DOING_FOO 
}; 

ErrorNum foo() 
{ 
    if (some_condition) 
     return NO_ERROR; 
    else 
     return ERROR_DOING_FOO; 
}