有沒有簡單的方法來拋出自定義空指針異常在c + +? 我的想法是重新定義this
指針,但它有3個問題:C++ - 拋出自定義空指針異常
- 不使用
this
拋出標準ACCES衝突異常 - 指針檢查每次使用
Visual Studio中顯示此爲
InteliSense
時間錯誤(編譯)(不知道其他的編譯器做)#include <iostream> #define this (this != nullptr ? (*this) : throw "NullPointerException") class Obj { public: int x; void Add(const Obj& obj) { this.x += obj.x; // throws "NullPointerException" //x = obj.x; // throws Access Violation Exception } }; void main() { Obj *o = new Obj(); Obj *o2 = nullptr; try { (*o2).Add(*o); } catch (char *exception) { std::cout << exception; } getchar(); }
咦?你有編譯錯誤還是什麼? –
沒有copile錯誤。程序按預期工作異常被拋出。 Visual Studio的智能(代碼輔助)表明它是無效的,但不妨礙編譯。 – EOG
我個人的政策是重新定義關鍵字是狂野的西部。祝你好運! –