在C语言中没有语句try / catch。 我该如何处理错误?
答案 0 :(得分:2)
C库使用不同的错误处理机制:
每个函数的返回值可能包含错误值。然后,调用者需要在每次函数调用之后验证返回值是否指示非错误状态。例如<unistd.h>
中的大部分功能。
有些使用全局变量,当发生错误时,该变量设置为非零值。例如,失败时,fopen
将errno
(来自C标准库的全局变量)设置为错误值,并且还返回-1
而不是文件描述符。这也是C标准的一部分,请参阅:http://en.cppreference.com/w/c/error/errno。
最后可以使用longjmp
模拟C ++中的异常处理:calles首先在代码中的给定位置调用setjmp
。库函数失败后,使用longjmp
直接跳转到该位置。例如libpng
执行此操作,如http://www.libpng.org/pub/png/libpng-manual.txt中所述。但是这有几个困难。
答案 1 :(得分:0)
我完全赞同@tmlen,并为Tizen特定添加了更多内容,
如果错误源自Tizen Native API,则可以使用get_last_error()
捕获错误。
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球员......)