Poco:Bugcheck
Poco::Bugcheck
// Library: Foundation
// Package: Core
// Module: Bugcheck
// Namespace: Poco
宏
结果
// Library: Foundation
// Package: Core
// Module: Bugcheck
// Namespace: Poco
功能:Bugcheck提供了几个有用的宏,可以实现参数检测,逻辑错误检测,空指针检测,出现错误会抛出异常。如果链接的是libPocoFoundationd.so,且系统上存在debugger工具,并与程序关联,则debugger会启动,对程序进行调试。
宏
poco_assert(cond) /* 条件不成立,抛异常 */ poco_assert_dbg(cond) /* 宏_DEBUG定义,条件成立,抛异常 */ poco_check_ptr(ptr) /* 空指针,抛异常 */ poco_bugcheck() /* 这个宏所在的代码,不应该被运行,如果被运行,则说明出现逻辑错误,抛异常 */ poco_debugger() /* 纯粹break into debugger,不抛异常*/
注:debugger的存在与否,在windows上,是通过调用IsDebuggerPresent()来判断的;在UNIX上,通过环境变量POCO_ENABLE_DEBUGGER是否被设置来判断
demo
int t_poco_assert(int i,void *p) { poco_assert(i > 3); poco_check_ptr(p); return 0; } int main() { int i = 1; void *p = &i; try { t_poco_assert(i,p); } catch(Exception& e) { std::cout << e.displayText() << std::endl; } i = 10; p = NULL; try { t_poco_assert(i,p); } catch(Exception& e) { std::cout << e.displayText() << std::endl; } if (i > 0) { // everything is ok. } else { poco_bugcheck(); } return 0; }
结果