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

How can I handle error in Tizen Native app using C language?

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

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

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

中的大多数函数

有些使用在发生错误时设置为非零值的全局变量。例如,在失败时,fopenerrno(来自 C 标准库的全局变量)设置为错误值,并且 returns -1 而不是文件描述符。这也是 C 标准的一部分,参见:http://en.cppreference.com/w/c/error/errno.

最后,可以使用 longjmp: The calles first calls setjmp at a given place in code. The library function, when it fails, then jumps directly to that place using longjmp. For example libpng does this, as described in http://www.libpng.org/pub/png/libpng-manual.txt 模拟 C++ 中的异常处理。但这有几个困难。

我完全同意@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 家伙...)