Coo*_*der 11 c++ error-handling
我无法理解c ++中的errno库是为了什么?在其中设置了哪些类型的错误,如何知道哪个数字代表哪个错误?
它会影响程序执行吗?
Nik*_*kko 12
errno.h是C++的C子集的一部分.它由C库使用并包含错误代码.如果对函数的调用失败,则对应于错误设置变量"errno".
如果您使用的是C++标准库,那将毫无用处.
在C中,您有将errno代码转换为C字符串的函数.如果你的代码是单线程的,你可以使用strerror,否则使用strerror_r(参见http://www.club.cc.cmu.edu/~cmccabe/blog_strerror.html)
例如在C中它的工作方式如下:
int result = call_To_C_Library_Function_That_Fails();
if( result != 0 )
{
char buffer[ 256 ];
strerror_r( errno, buffer, 256 ); // get string message from errno, XSI-compliant version
printf("Error %s", buffer);
// or
char * errorMsg = strerror_r( errno, buffer, 256 ); // GNU-specific version, Linux default
printf("Error %s", errorMsg); //return value has to be used since buffer might not be modified
// ...
}
Run Code Online (Sandbox Code Playgroud)
当您使用C库或C语言库中的OS库时,当然可能需要使用C++.例如,如果您在Unix系统中使用sys/socket.h API.
使用C++,如果您正在围绕C API调用进行包装,则可以使用自己的C++异常,这些异常将使用errno.h从C API调用错误代码中获取相应的消息.
| 归档时间: |
|
| 查看次数: |
18696 次 |
| 最近记录: |