南大通用GBase 8s GSDK 错误处理与调试指南
在使用 GBase 8s 的 GSDK(GBase 8s Software Development Kit)进行开发时,错误处理和调试是确保应用程序稳定性和可靠性的关键环节。本文将详细介绍 GSDK 中的错误码分类、错误信息获取方法以及调试技巧,帮助开发者快速定位和解决问题。
错误码与错误信息
GCI 错误主要分为两类:
GCI 错误:由 GCI 函数调用返回的错误。小于900000的错误代码表明是GCI侧运行时产生的报错信息。
GCI_SUCCESS (0):操作成功
GCI_SUCCESS_WITH_INFO (1):成功但有警告信息
GCI_ERROR (-1):发生错误
GCI_NEED_DATA (99):需要更多数据
GCI_NO_DATA (100):没有数据
数据库错误:SQL 语句执行时数据库返回的错误。大于900000的错误码表明是Server报错信息,需减900000后结合Server错误码查看。 Server错误码不区分正负值,取绝对值即可。
获取详细错误信息
使用GCIErrorGet获取gci操作失败的错误信息
static void checkerr(GCIError *errhp, int rc)
{
GCItext errbuf[ERRMSG_LEN];
ub4 buflen;
sb4 errcode;
sb1 errstate[256] = {0};
if(rc == GCI_SUCCESS) return;
switch (rc)
{
case GCI_SUCCESS_WITH_INFO:
printf("Error - GCI_SUCCESS_WITH_INFO\n");
break;
case GCI_NEED_DATA:
printf("Error - GCI_NEED_DATA\n");
break;
case GCI_NO_DATA:
printf("Error - GCI_NO_DATA\n");
break;
case GCI_ERROR:
GCIErrorGet(errhp, 0, errstate, &errcode, errbuf, ERRMSG_LEN, GCI_HTYPE_ERROR);
fprintf(stdout, "Error code ----- %d\nError state ---- %s\nError message -- %s\n", errcode, errstate, errbuf);
break;
case GCI_INVALID_HANDLE:
printf("Error - GCI_INVALID_HANDLE\n");
break;
case GCI_STILL_EXECUTING:
printf("Error - GCI_STILL_EXECUTING\n");
break;
case GCI_CONTINUE:
printf("Error - GCI_CONTINUE\n");
break;
default:
printf("Error - %d\n", rc);
break;
}
}GCIErrorGet :用于获取详细的错误信息,包括错误码、错误状态和错误消息。
errhp :错误句柄。
errstate :错误状态码。
errcode :错误代码。
errbuf :错误消息缓冲区。
1. 检查返回值:每次 GCI 函数调用后,检查返回值以确定操作是否成功。
2. 使用错误处理函数:编写统一的错误处理函数(如 checkerr ),简化错误处理逻辑。
3. 记录日志:将错误信息记录到日志文件中,便于后续分析和排查问题。
4. 结合 Server 错误码:对于大于 900000 的错误码,减去 900000 后查看 Server 错误码,获取更详细的错误信息。
通过本文的介绍了 GBase 8s GSDK 中的错误处理和调试方法。掌握错误码分类、错误信息获取方法以及调试技巧,可以快速定位和解决问题,提高开发效率。希望这些内容能帮助你在实际开发中更好地使用 GSDK。如果你在使用过程中遇到任何问题,欢迎随时在社区中提问,我们在这里为你提供支持!
评论
热门帖子
- 12025-12-01浏览数:182763
- 22023-05-09浏览数:25057
- 42023-09-25浏览数:18525
- 52020-05-11浏览数:17528