2017-04-10 147 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; 
}