ライブラリ関数ConnectToTCPServerを使用しています。この関数は、ホストに到達できない場合にタイムアウトします。その場合、アプリケーションは次のエラーでクラッシュします: "NON-FATAL RUN-TIME ERROR:" MyClient.c "、line 93、col 15、thread id 0x000017F0:Library function error(return value == -11 [0xfffffff5]) 。タイムアウトエラー」
エラーコード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;
}
Callbackfunctionが呼び出されることはありません。サーバーが実行されていないため、ConnectToTCPServerがタイムアウトします。コールバックが呼び出されているのではないかと思いますが、呼び出されることはありません。
編集2:コールバック関数は実際には呼び出されません。ConnectToTCPServerの戻り値には、同じエラー情報が含まれています。ConnectToTCPServerがこのエラーをスローするのはバグかもしれないと思います。私はそれをキャッチしてC90でビンに入れる必要があります。何か案は?
編集3:コールバック関数をテストしました。サーバーがオンラインであるというまれなケースで、コールバック関数が実際に呼び出されます。エラーが発生したときにコールバックが呼び出されないため、これは役に立ちません。