gpt4 book ai didi

c - 我怎样才能在 ansi C90 中捕获运行时错误

转载 作者:可可西里 更新时间:2023-11-01 02:33:26 30 4
gpt4 key购买 nike

我正在使用库函数 ConnectToTCPServer .当主机不可访问时,此函数超时。在这种情况下,应用程序会崩溃并出现以下错误:“非致命运行时错误:“MyClient.c”,第 93 行,第 15 栏,线程 ID 0x000017F0:库函数错误(返回值 == -11 [0xfffffff5])。超时错误”

Errorcode 11 是一个超时错误,所以这可能在我的应用程序中经常发生——但是应用程序崩溃了——我想捕获这个错误而不是让我的应用程序崩溃。

我如何在 Ansi C90 中捕获这个运行时错误?

编辑:这是当前使用的代码片段:

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:我测试了回调函数,在极少数情况下我的服务器在线时实际上调用了回调函数 - 虽然这无济于事,因为发生错误时不会调用回调。

最佳答案

查看 NI 文档,我看到了这个:
“库错误断点——只要 LabWindows/CVI 库函数在运行时返回错误,您就可以设置一个选项来中断程序执行。”

我推测他们有一个调试选项可以使程序在出现运行时错误时停止,您需要在配置、编译时或运行时禁用它。

我的第一个猜测是配置值或编译标志,但这是我找到的唯一选项,它是一个运行时选项:

// If debugging is enabled, this function directs LabWindows/CVI not<br/>
// to display a run-time error dialog box when a National Instruments<br/>
// library function reports an error.<br/>
DisableBreakOnLibraryErrors();<br/>

说说是否有帮助。

关于c - 我怎样才能在 ansi C90 中捕获运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4757106/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com