【发布时间】:2023-03-08 02:06:01
【问题描述】:
我正在使用库函数ConnectToTCPServer。当主机不可达时,该函数超时。在这种情况下,应用程序崩溃并出现以下错误: “非致命运行时错误:“MyClient.c”,第 93 行,第 15 列,线程 id 0x000017F0:库函数错误(返回值 == -11 [0xfffffff5])。超时错误”
Errorcode 11 是一个超时错误,所以这可能在我的应用程序中经常发生 - 但是应用程序崩溃了 - 我想捕捉这个错误而不是让我的应用程序崩溃。
如何在 Ansi C90 中捕获此运行时错误?
编辑: 这是当前使用的Codesn-p:
ConnectToTCPServer(&srvHandle, srvPort, srvName, HPMClientCb, answer, timeout);
与
int HPMClientCb(UINT handle, int xType, int errCode, void *transData){
printf("This was never printed\n");
return errCode;
}
永远不会调用回调函数。我的服务器没有运行,所以 ConnectToTCPServer 将超时。我怀疑回调被调用了——但它从未被调用过。
编辑2:实际上没有调用回调函数,ConnectToTCPServer的返回值包含相同的错误信息。我认为ConnectToTCPServer 抛出此错误可能是一个错误。我只需要抓住它并将其放入 C90 中即可。有什么想法吗?
编辑 3:我测试了回调函数,在我的服务器在线的罕见情况下,实际上调用了回调函数 - 这无济于事,因为发生错误时不会调用回调。
【问题讨论】: