在 C 语言中没有语句 try/catch。我该如何处理错误?
2 回答
C 库使用不同的错误处理机制:
每个函数的返回值都可能包含一个错误值。然后,调用者需要在每个函数调用之后验证返回值是否指示非错误状态。例如<unistd.h>
.
有些使用全局变量,当错误发生时设置为非零值。例如,在失败时,fopen
将errno
(C 标准库中的全局变量)设置为错误值,并返回-1
而不是文件描述符。这也是 C 标准的一部分,请参阅:http ://en.cppreference.com/w/c/error/errno 。
最后,可以使用以下方法模拟 C++ 中的异常处理longjmp
:调用首先setjmp
在代码中的给定位置调用。库函数,当它失败时,然后使用 . 直接跳转到那个地方longjmp
。例如libpng
这样做,如http://www.libpng.org/pub/png/libpng-manual.txt中所述。但这有几个困难。
我完全同意@tmlen 并为 Tizen 特定添加了更多内容,
get_last_error()
如果错误源自 Tizen Native API,您可以捕获错误。
int get_last_result (void);
char* get_error_message (int err);
来自 EFL 的错误可以被捕获with eina_error_get()
/eina_error_msg_get()
但不幸的是 Tizen 2.4 不支持 eina 错误功能。它只支持错误类型。(我无法理解三星的 EFL 人......)