您的位置:首页 > 运维架构

openssl的错误处理

2015-03-02 20:55 162 查看
熟练使用错误函数对开源库的正确使用特别重要。

下面先给出简单的应用实例:

包含头文件:openssl/err.h

//加载错误信息

ERR_load_ERR_strings();

ERR_load_crypto_strings();

// 获取错误号

unsigned long ulErr = ERR_get_error();

char szErrMsg[1024] = {0};

char *pTmp = NULL;

// 格式:error:errId:库:函数:原因

pTmp = ERR_error_string(ulErr,szErrMsg);

其他的信息需要使用到openssl库中丰富的函数,下面给出了28个函数,大家可以自己对照说明来进行应用。

1) ERR_add_error_data

在本层错误的err_data元素中添加说明信息。该函数一般由各个模块调用,比如可以用它说明什么操作导致了错误。

2) ERR_clear_error

清除所有的错误信息。如果不清楚所有错误信息,可能会有其他无关错误遗留在ERR_STATE表中。

3) ERR_error_string/ ERR_error_string_n

根据错误码获取具体的错误信息,包括出错的库、出错的函数以及错误原因。

4) ERR_free_strings

释放错误信息哈希表;通常在最后调用。

5) ERR_func_error_string

根据错误号,获取出错的函数信息。

6) ERR_get_err_state_table

获取存放错误的哈希表。

7) ERR_get_error

获取第一个错误号。

8) ERR_get_error_line

根据错误号,获取错误的行号。

9) ERR_get_error_line_data

根据错误号,获取出错信息。

10) ERR_get_implementation

获取错误处理函数,与哈希表操作相关。

11)ERR_get_state

获取ERR_STATE表。

12)ERR_lib_error_string

根据错误号,获取是哪个库出错。

13)ERR_load_strings

加载错误信息,由各个模块调用。

14)ERR_load_ASN1_strings

ERR_load_BIO_strings

ERR_load_BN_strings

ERR_load_BUF_strings

ERR_load_COMP_strings

ERR_load_CONF_strings

ERR_load_CRYPTO_strings

ERR_load_crypto_strings

ERR_load_DH_strings

ERR_load_DSA_strings

ERR_load_DSO_strings

ERR_load_EC_strings

ERR_load_ENGINE_strings

ERR_load_ERR_strings

ERR_load_EVP_strings

ERR_load_OBJ_strings

ERR_load_OCSP_strings

ERR_load_PEM_strings

ERR_load_PKCS12_strings

ERR_load_PKCS7_strings

ERR_load_RAND_strings

ERR_load_RSA_strings

ERR_load_UI_strings

ERR_load_X509_strings

ERR_load_X509V3_strings

各个模块实现的,加载各自错误信息。

15)ERR_peek_error

获取第一个错误号。

16)ERR_peek_error_line

获取第一个错误的出错行。

17)ERR_peek_error_line_data

获取第一个错误的行数和错误信息。

18)ERR_peek_last_error

获取最后一个错误号。

19)ERR_peek_last_error_line

获取最后一个错误的行号。

20)ERR_peek_last_error_line_data

获取最后一个错误的行号和错误信息。

21)ERR_print_errors

将错误信息输出到bio中。

22)ERR_print_errors_cb

根据用户设置的回调函数来打印错误信息。

23)ERR_print_errors_fp

将错误打印到FILE中。

24) ERR_put_error

将错误信息存放到ERR_STATE 表中top指定的错误堆栈(最后的错误)。

25) ERR_reason_error_string

根据错误号得到错误原因。

26) ERR_remove_state

删除线程相关的错误信息。

27) ERR_set_error_data

将错误信息存放到ERR_STATE 表中top指定的错误堆栈(最后的错误)。

28) ERR_unload_strings

从错误哈希表中删除相关信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: