try/catch funktioniert nicht!



  • Hallo Forum,

    ich möchte Dateien lokal und auf dem Server öffnen, und das mit try/catch abfangen,
    nur das bei z.B. einer falschen Url oder Pfad nie in den catch Teil reingesprungen wird! Vielleicht hat jemand eine Idee warum, hier der Code:

    ...
    try{
    	pHtmlFile = (CHttpFile*) session.OpenURL(csHTTPAdress); // das Proggy stürzt schon hier ab! :(
    }
    catch(CFileException e)
    {
    	bError = TRUE;
    	return dwRet = 400;
    }
    

    das Programm kommt nie in den catch Bereich!

    grüsse
    pixel



  • OpenURL() wirft ja auch keine CFileException, sondern eine CInternetException*****, wenn ein Fehler aufgetreten ist (wichtig ist das * dahinter).

    Und du solltest vermutlich die TRY/CATCH Makros verwenden:

    TRY{
        pHtmlFile = (CHttpFile*) session.OpenURL(csHTTPAdress); // das Proggy stürzt schon hier ab! :(
    }
    CATCH(CInternetException, e)
    {
        bError = TRUE;
        return dwRet = 400;
    }
    END_CATCH
    


  • mickeysoft macht das etwas anders - kann sein dass es daran liegt. versuch mal:

    ...
    TRY
    {
      ....
    }
    CATCH (CFileException, e)
    {
      ....
    }
    END_CATCH
    ...
    

  • Mod

    Also die TRY/CTACH macros verwende ich nicht mehr, ist auch nicht nötig.
    Man muss sich nur im klaren sein, dass die MFC Exception Pointer wirft und man diese auch aufräumen muss:

    try
    { 
        pHtmlFile = (CHttpFile*) session.OpenURL(csHTTPAdress); 
    } 
    catch(CFileException *e) 
    {
        e->Delete();
        bError = TRUE;
        return dwRet = 400;
    }
    


  • Hallo,

    @Martin, der Stern war's der Probleme machte, es geht jetzt genau wie in deinen Beispiel!

    try{
        pHtmlFile = (CHttpFile*) session.OpenURL(csHTTPAdress);
    }
    catch(CException* e) // dieser Stern! :) ich hab nur noch vorsichtshalber statt CFileException die CException genommen!
    {
        e->ReportError();
        bError = TRUE;
    }
    

    pixel



  • pixel schrieb:

    ich hab nur noch vorsichtshalber statt CFileException die CException genommen!

    Besser ist das 😉 (siehe mein Beitrag - OpenURL() wirft eine CInternetException*, wie dir die MSDN bestätigen kann)


  • Mod

    pixel schrieb:

    e->ReportError();
    

    Danach bitte

    e->Delete
    

    nicht vergessen



  • ja, hab schon gemerkt, ist schon drin! 🙂
    danke

    pixel


Anmelden zum Antworten