-2

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

4

2 回答 2

2

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

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

有些使用全局变量,当错误发生时设置为非零值。例如,在失败时,fopenerrno(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中所述。但这有几个困难。

于 2016-08-27T10:50:42.313 回答
0

我完全同意@tmlen 并为 Tizen 特定添加了更多内容,

get_last_error()如果错误源自 Tizen Native API,您可以捕获错误。

参考: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 人......)

于 2016-08-29T00:59:45.877 回答