alle Exception einer Funktion finden?



  • Hi Leute
    mal eine Frage, wie bekomme ich "alle" Exception einer Funktion raus.

    Ich hab das bei Typen Umwandlungen immer durch testen rausgefunden, doch eigendlich müßte das doch irgend wo stehen oder?
    (bei einigen Funktionen steht auch mal was in den Dokus, aber halt nicht bei allen, s. u.)

    momentan interessiert mich die Funktion: TIdHTTP1->Get(...)

    mfg

    Gast1807



  • Hallo

    try
    {
      }
    catch(...)
    {
      // alle Exceptions
      }
    

    bis bald
    akari



  • Ich weiß nicht, ob dabei Sockets verwender werden. Wenn ja, wird es keine Exceptions geben, sondern man muß das Ereignis TClientSocket::OnError() verwenden. Dort wird ein ErrorCode übergeben. Wenn dieser auf 0 gesetzt wird, wird die Exception nicht angezeigt.



  • Willst du alle abfangen oder rausmbekommen was für Exeptions die Funktion werfen kann?

    In dem Fall solltest du in der BCB Hilfe nachgucken, was TIdHTTP1->Get so alles werfen kann! Ansonsten wie akari gesagt hat...

    [EDIT]Die Indy Exeptions stehen unter EIdHTTPxxxx[/EDIT]



  • Danke für die Antworten. 🙂
    Ich will wissen welche Exception die Funktion auslöst.

    nirsaja:

    [EDIT]Die Indy Exeptions stehen unter EIdHTTPxxxx[/EDIT]

    das sind aber sehr viele, geht aber schon in die richtige Richtung.

    akari:

    Ich will ja auch auf die entsprechenden Exception unterschiedlich reagieren.

    mfg



  • Ich hab ein wenig rum gespielt und das jetzt draus gemacht:

    bool __fastcall TWebDownload::HttpLoadFile(AnsiString DateiName)
    {
       bool fehler=false;
    
       TFileStream *fs = new TFileStream(t_verzeichnis+"\\"+DateiName, fmCreate);
    
          try{
             Http->Get(t_link+"/"+DateiName, fs);
          }
          catch(EIdSocketError &ex){
             ShowMessage("Keine Verbindung ins Internet!");
             fehler=true;
          }
          catch(EIdProtocolReplyError &ex){
             if(Http->ResponseCode==404)
                ShowMessage("Der Link ist ungültig!");
             fehler=true;
          }
          catch(...){
             ShowMessage("Ein unbekannter Fehler ist aufgetreten!");
             fehler=true;
          }
    
       delete fs;
    
       return(fehler);
    }
    

    kann ich das so stehen lassen oder hab ich was vergessen?

    mfg

    Gast1807



  • Hallo

    du könntest das aber auch noch einfacher machen

    bool __fastcall TWebDownload::HttpLoadFile(AnsiString DateiName)
    {
       bool fehler=false;
    
       TFileStream *fs = new TFileStream(t_verzeichnis+"\\"+DateiName, fmCreate);
    
       try{
         Http->Get(t_link+"/"+DateiName, fs);
         }
       catch (Exception &exception)
       {
         Application->ShowException(&exception); // Exception anzeigen
         fehler=true;
         }
       delete fs;
    
       return(fehler);
      }
    

    Damit bekommst du die Standardfehlerbeschreibungen.

    bis bald
    akari


Anmelden zum Antworten