熟练使用错误函数对开源库的正确使用特别重要。
下面先给出简单的应用实例:
包含头文件: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
从错误哈希表中删除相关信息。
原文地址:http://blog.csdn.net/hepfei90/article/details/44023467