[英]C++ exceptions for large project
我目前正在將C ++游戲引擎構建為學習練習,並將異常納入對性能要求不高的部分。 我主要是PHP和Ruby的開發人員,所以我習慣於使用這樣的簡單語法定期聲明新的異常類:
class SomeSubSystemException < Exception; end
要么
class SomeSubSystemException extends Exception {};
有沒有一種簡單的語法可以在C ++中執行此操作,還是我打算針對C ++項目使用錯誤的方式處理異常? 當前,我必須對每個類的異常執行以下操作,這使我不想定義太多異常:
class SubSystemException : public MainException {
SubSystemException(std::string& msg) : MainException(msg) {}
};
提前致謝!
定義一個為您執行此操作的宏。
#define NEW_EXC(Derived, Base) class Derived : Base {\
Derived(const std::string& msg) : Base(msg) {}
NEW_EXC(SubSystemException, MainException);
#undef NEW_EXC
完成。
盡管我同意Bo Person的評論,即這將不是您的boilaerplate的主要來源,但這里有另一種說法:
使用CRTP
template<class T>
class MainException : public std::runtime_error{
private:
MainException(std::string const& msg):std::runtime_error(msg){ }
public:
static MainException<T> create(std::string const& msg){
return MainException<T>(msg);
}
};
//Usage:
class MyException : public MainException<MyException> {};
void foo(){
MyException::create(std::string("Foo"));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.