在C++中的我應該用std::runtime_error
來表示某種錯誤發生,或者我應該創建一個從std::runtime_error
繼承,所以我可以更好地處理這些自定義異常。恰當使用C++異常
例如,如果我從不知何故用戶的輸入,這將是更好:
if (inputInvalid)
{
throw std::runtime_error("Invalid input!");
}
對戰...
class invalid_input
: public std::runtime_error /* or should I inherit from std::exception? */
{
public:
invalid_input()
: std::runtime_error("Invalid input!")
{
};
};
-------------------------------------------------------
if (inputInvalid)
{
throw invalid_input();
}
這被認爲是更好的使用異常處理/如果這更好的實踐?
後者將使捕獲這種特定類型的運行時錯誤成爲可能,而第一種只允許您捕獲'a'運行時錯誤。哪個更好取決於你打算如何處理錯誤。 – wroniasty 2012-04-26 15:39:03
這是一個非常敏感的話題,每個人都有不同的意見。只要看看'Go'式的方法('throw'終止任務,所以不需要有明顯的類型)與'Java'方法及其非常複雜的層次結構。 – 2012-04-26 15:39:54