2013-12-18 1 views
0

В моем приложении я получил сообщение об исключении. Это происходит, когда я бросаю false, когда условие if() терпит неудачу. Сообщение об ошибке я получил, как показано нижеИсключение не попало в vC++

Unhandled exception at 0x74fe812f in MyApp.exe: Microsoft C++ exception: bool at memory location 0x0015c87b.. 

Мой код, который генерирует эта ошибка

if((dwStatus!= 302) && (dwStatus< 200 || dwStatus> 299)) 
    throw false; 

Здесь dwStatus это DWORD, который получил от pHttpFile->QueryInfoStatusCode(dwStatus) где pHttpFile является ссылкой на объект CHttpFile

Коды находятся в блоке try, и соответствующие блоки catch также имеются.

Как происходит эта ошибка.

EDIT

Это блок поймать

catch(CException* pErr) 
{ 
    TCHAR szErr[1024]; 
    pErr->GetErrorMessage(szErr,1024); 
    pErr->Delete(); 
    bRet = FALSE; 
} 
+2

вы можете показать блок поймать? – Mgetz

+0

Ваш блок 'catch' захватывает объекты типа' CException * '. Вы бросаете «bool». Почему вы ожидаете, что этот блок catch обработает это исключение? –

ответ

2

Ваш ловушка блокирует тип исключения CException*, но вы выбрасываете исключение типа bool. Если вы хотите, чтобы поймать это исключение, вы будете нуждаться в блоке улова, который ловит исключения типа bool:

catch(bool exception) 
{ 
    //report the exception, or recover, or whatever 
} 
0

Исключение вызвано броска. Это то, что должен делать бросок. Если ваш вопрос заключается в том, почему исключение не поймано, тогда, пожалуйста, отредактируйте свой вопрос и опубликуйте свой код улова.

+0

Спасибо за ответ. Вопрос обновляется, и блок catch добавляется. –