有没有一些跨平台的C库用于异常处理(实现C中的try/catch)?
我还在寻找关于C++中如何实现它的文档(如何屏蔽中断之类的内容)。
有没有一些跨平台的C库用于异常处理(实现C中的try/catch)?
我还在寻找关于C++中如何实现它的文档(如何屏蔽中断之类的内容)。
throw
、try
、catch
、finally
等功能的异常处理库,并且还支持Dispose模式,因此你可以自动释放资源。同时,它还可以像处理异常一样处理信号(如SIGFPE
和SIGSEGV
)。setjmp
和longjmp
实现,是免费软件,因此你可以阅读和修改源代码。实现类似C++异常处理的另一种方式是使用setjmp和longjmp。参见维基百科页面中的一个简单示例:http://en.wikipedia.org/wiki/Setjmp.h。查看Lua解释器的源代码可以了解实际应用。请注意,这不是真正意义上的try/catch实现,您无法从C++中调用库并获得真正的异常。
试试这个。
#define TRY char *__exc_message = NULL; do
#define THROW(exc) { __exc_message = exc; break; }
#define CATCH(exc) while(0); if(__exc_message != NULL) { exc = __exc_message;
#define FINALLY }
void Test(int a, int b)
{
char *exc = NULL;
TRY
{
if(a < b) THROW("A < B!");
if(a > b) THROW("A > B!");
TRACE_INFO("Ok :-)");
}
CATCH(exc)
{
TRACE_ERROR(exc);
}
FINALLY
{
TRACE_INFO("Finally...");
}
}