如何使用C语言处理Tizen Native应用程序中的错误?

时间:2016-08-27 10:11:13

标签: c tizen tizen-native-app

在C语言中没有语句try / catch。 我该如何处理错误?

2 个答案:

答案 0 :(得分:2)

C库使用不同的错误处理机制:

每个函数的返回值可能包含错误值。然后,调用者需要在每次函数调用之后验证返回值是否指示非错误状态。例如<unistd.h>中的大部分功能。

有些使用全局变量,当发生错误时,该变量设置为非零值。例如,失败时,fopenerrno(来自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()捕获错误。

参考:https://developer.tizen.org/development/api-references/native-application?redirect=/dev-guide/latest/org.tizen.native.mobile.apireference/group__CAPI__COMMON__ERROR.html

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球员......)