异常与c风格语言中的非异常处理

时间:2015-10-06 18:11:31

标签: c++ exception exception-handling

这个问题是因为我在看this talk 谈话后半部分的很大一部分用于回归,第四部分是关于c ++中的异常处理和非异常处理。

我主要使用c,但我想让一些有经验的程序员帮助理解这一点。

我没有编写任何真正做过异常的代码,我已经完成了java代码,这基本上迫使你添加try / catch块等。

当他说异常处理与非异常处理时,这意味着java几乎强迫你在任何不安全代码周围添加这些块的方式,而在c中基本上如果你不记得这样做你的应用程序会崩溃吗?

1 个答案:

答案 0 :(得分:2)

您必须考虑到异常通常是面向对象编程的构造 - 这就是Java,C#,C ++等经常讨论异常和try / catch块的原因。

在C中,情况并非如此。通常,程序员需要通过返回值来捕获错误(C标准使用errno来跟踪某些函数返回的任何错误值)。

如果出现问题,C会崩溃或出现意外行为 - 这就是异常的来源。它们是更好的构造,用于确定出错的地点,方式和原因。

没有办法在C中制作例外,但是可以用POSIX信号做类似的事情 - 虽然不推荐,除非你真的知道你在做什么。最好使用返回值来确定某人出错/正确的时间。