C中是否有try-catch语句?还是有人制作的外部图书馆?会非常有用
如果没有,有没有办法可以确定变量是否是数组?
答案 0 :(得分:3)
C中是否有try-catch语句?还是有人制作的外部图书馆?会非常有用
在Windows上有SEH,但你真的不应该将它用于一般应用程序。如果没有类似C ++析构函数的东西,就不可能编写真正的异常安全代码。
如果没有,有没有办法可以确定变量是否是数组?
是。你自己跟踪它。
答案 1 :(得分:1)
C中没有try-catch语句,但您可以使用exception mechanism构建jump buffers。但是,这可能是一个非常糟糕的主意,因为现在有办法在抛出异常时自动释放资源。
如果您将void *
称为变量,则无法确定它是否为数组。但是,您可以在应用程序中构建逻辑以实现runtime type information (RTTI)。
答案 2 :(得分:1)
我正在开发exceptions4c,这是C(可移植ANSI C)中的异常处理系统,目前支持:throw
,try
,catch
,{{1}还有一些好东西。例如,它支持 Dispose模式,因此您可以自动释放资源。您也可以处理信号(例如finally
和SIGFPE
),就像它们是例外一样。
答案 3 :(得分:0)
答案 4 :(得分:0)
如果编译器可以确定变量是否是数组,那么您也可以。只需查看它声明的位置(或者在动态分配的数组中使用malloc'd)。
答案 5 :(得分:0)
try-catch是一种在面向对象的环境(如C ++)中进行错误处理的方案。 ANSI C不是面向对象的,它要求您声明变量类型。在C中,主要通过检查被调用函数的返回值来执行错误处理。你可以在凌乱的帖子中看到更多:ANSI C equivalent of try/catch?