异常与 errno

Phi*_*lip 4 c c++ exception errno

作为一名 C 程序员,我对异常没有太多经验。我更习惯于errno作为跨多个函数调用传达错误的一种方式。话虽如此,我没有看到异常的显着特征,所以......

异常和使用之间的根本区别是什么errno

Con*_*yer 5

这里有很多差异,很难说从哪里开始。

首先,errno在C中使用的是全局变量;这意味着调用errno设置子例程的每个例程都必须errno在执行任何其他工作之前检查它是否关心正确性。幸运的是,errno 是线程安全的

C++ 异常会自动展开调用堆栈,直到找到准备处理故障的函数。这意味着在大多数情况下,用户不必显式检查每个调用是否有错误;相反,他们可以在一处收集错误返回。与 errno 不同,C++ 异常可以包含整数以外的值。