C中的try-catch语句

时间:2011-04-25 01:48:50

标签: c arrays multidimensional-array try-catch

C中是否有try-catch语句?还是有人制作的外部图书馆?会非常有用

如果没有,有没有办法可以确定变量是否是数组?

6 个答案:

答案 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)中的异常处理系统,目前支持:throwtrycatch,{{1}还有一些好东西。例如,它支持 Dispose模式,因此您可以自动释放资源。您也可以处理信号(例如finallySIGFPE),就像它们是例外一样。

答案 3 :(得分:0)

当然,C中的例外没有原生支持。

看看以下链接,基本上,它使用了setjmp()和longjmp():

http://www.on-time.com/ddj0011.htm

答案 4 :(得分:0)

如果编译器可以确定变量是否是数组,那么您也可以。只需查看它声明的位置(或者在动态分配的数组中使用malloc'd)。

答案 5 :(得分:0)

try-catch是一种在面向对象的环境(如C ++)中进行错误处理的方案。 ANSI C不是面向对象的,它要求您声明变量类型。在C中,主要通过检查被调用函数的返回值来执行错误处理。你可以在凌乱的帖子中看到更多:ANSI C equivalent of try/catch?