Это отчасти связано с моим предыдущим вопросом. Справочная информация здесь: Простой HTTP-запрос с C ++

В основном я отправляю данные на сервер через URL-адрес с C ++. Теперь я использую для этого функцию openURL () в классе CInternetSession. Если openURL успешно подключается к серверу, никаких ошибок или исключений не возникает. Однако иногда в отладчике Visual C ++ 2006 я получал это всплывающее окно.

First-chance exception in myProg.exe (KERNELBASE.DLL): 
0xE06D7363: Microsoft C++ Exception.

Я установил исключения отладки на «останавливать всегда», и в окне отладки он показывает мне

Warning: throwing CInternetException for error 12029

Кроме того, когда я запускаю программу отдельно (без отладчика и прочего), я получаю всплывающее окно с сообщением об ошибке отладки.

Я понимаю, что это связано с тем, что openURL () не удалось подключиться к указанному URL-адресу. Однако теперь моя проблема в том, что я не хочу, чтобы всплывающее окно сообщало мне об этом. Я поместил блок try catch вокруг своего кода, но он все еще не обрабатывает исключение. Вот код

    try {
        // Open HTTP file
        pHttpFile =(CHttpFile *) mySession.OpenURL(test1.c_str());
    }
    catch (CInternetException) {
        printf("Received Exception from OpenURL()");
        // Handle exception
    }

Я что-то здесь упустил !?

0
Sophia 20 Май 2014 в 08:25

2 ответа

Лучший ответ

Попробуйте подключиться к этому IP-адресу другим способом вручную с помощью команды «подключиться». Если вы можете подключиться к нему, openURL не будет генерировать исключение, потому что вы уже проверили, что можете подключиться к нему с помощью той другой функции, о которой я только что упомянул.

Можете ли вы также рассмотреть возможность просмотра своего кода, чтобы убедиться, что исключение не возникло где-либо еще?

1
user3709862 5 Июн 2014 в 07:01

Я думаю, вам следует вместо этого поймать CInternetException *. Для всех исключений MFC выбрасывается как указатель.

PS. Вы также должны использовать CException :: Delete () в своем блоке catch, чтобы удалить объект исключения, который вы только что перехватили, если вам не нужно его снова генерировать.

1
SuperLucky 2 Июн 2020 в 15:47