Die Sache mit den Exceptions



  • Aloha,

    folgendes Problem

    try
    {
    
    CString dll = dl_pfad;
    tFile = (CHttpFile*)m_is.OpenURL(dl_pfad, 1,INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_DONT_CACHE);
    
    }
    
    catch(CInternetException* e)
    {
    

    Wenn der dl_pfad z.B. "c:/wasweissich/image.jpg" ist, knallt mir das Programm weg. Es geht aber nicht in Exception rein, weil es keine Internet Exception ist, was mir aber nahe lag, da es sich i.d.R. um einen Pfad von einer Webseite handelt an dieser Stelle. Ich parse nämlich Webseiten.

    Es handelt sich hier um eine CFileExeption.

    Lange Faseln, kurzer Frage.

    Ich fange ja mit diesem Codeschnipsel jetzt alle Exceptions ab :

    try
    {
    
    CString dll = *it_dl;
    tFile = (CHttpFile*)m_is.OpenURL(*it_dl, 1,INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_DONT_CACHE);
    
    }
    
    catch([CException* e)
    {
    

    Was für ein Nachteil, oder auch nicht, ergibt sich, wenn ich nicht feingliedrig CFileExeption benutze, sondern die Vaterklasse CExeption ????

    Danke und Grüße

    BOA



  • Einen Nachteil gibt es so erstmal nicht, wenn es dir so genügt. Denn letztendlich mußt du selbst entscheiden, welchen Typ du abfängst. Denn CException kann sowohl CFileException als auch CInternetException sein. Spezialisierte Exceptions brauchst du nur dann abfangen, wenn du unterschiedlich drauf reagieren willst oder mußt. Dann wirst du aber instinktiv das hier machen:

    try
    {
    }
    catch(CInternetException *ex)
    {
       // spzielle Behandlung bei CInternetException
    }
    catch(CException *ex)
    {
       // Behandlung aller restlichen CExceptions.
    }
    


  • Aloha,

    *daumen hoch* 👍 👍

    diese Struktur ist mir neu.

    Ich kann also eine try - Anweisung und mehrere catch - Anweisungen dahinter packen ???

    Klasse !

    Danke und Grüße

    BOA


Anmelden zum Antworten