Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Exceptions Behandlung

Exceptions Behandlung

Scheduled Pinned Locked Moved Unsolved German
8 Posts 4 Posters 730 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    M.W43
    wrote on last edited by
    #1

    Hallo,
    ich möchte 6 verschieden Eingabedialoge mit einer Exceptions Abfangen,
    ist dieses möglich? Es soll auch bei jeder Exceptions der focus richtig gesetzt sein.

     //die Daten aus dem Formular übernehmen
        modell->setData(modell->index(zeile, 1), ui->lineEditVorname->text());
        modell->setData(modell->index(zeile, 2), ui->lineEditName->text());
        modell->setData(modell->index(zeile, 3), ui->lineEditStrasse->text());
        modell->setData(modell->index(zeile, 4), ui->lineEditPLZ->text());
        modell->setData(modell->index(zeile, 5), ui->lineEditOrt->text());
        modell->setData(modell->index(zeile, 6), ui->lineEditTelefon->text());
        //die Änderungen übernehmen
        modell->submitAll();
    
    //die Slots
    void KundeNeu::check()
    {
      bool ausnahme = false;
    
      try{
        QString zahl1 = ui->lineEditVorname->text();
        if(zahl1.isEmpty()){
           ausnahme = true;
           throw 1;
        }
        }catch (int e) {
          QMessageBox::information(this, "Fehler", "Der Vorname wurde nicht eingeben.");
          ui->lineEditVorname->setFocus();
    }
        
        if(ausnahme == false)
            speichern();
    }
    
    
    1 Reply Last reply
    0
    • AxelViennaA Offline
      AxelViennaA Offline
      AxelVienna
      wrote on last edited by
      #2

      …warum willst Du das unbedingt mit exceptions abfangen? Es nützt wenig, wenn Du innerhalb einer Methode die exception selbst auslöst und direkt danach abfängst. Du kannst die Fehlerbehandlung an der Stelle durchführen, wo Du die exception auslöst und Dir den Umweg über die exception sparen. Zudem fragst Du den Parameter der exception (int) im catch Statement gar nicht ab, er ist mithin redundant.

      C++ and Python walk into a bar. C++ reuses the first glass.

      1 Reply Last reply
      1
      • JoeCFDJ Offline
        JoeCFDJ Offline
        JoeCFD
        wrote on last edited by
        #3

        Axel hat recht. Exceptions sind nicht noetig in diesem Fall.

        1 Reply Last reply
        1
        • M Offline
          M Offline
          M.W43
          wrote on last edited by
          #4

          Danke schön, für die Antworten und die Tipps, ich wollte es deswegen mit einer exceptions abfangen, damit ich prüfen kann das beim Anlegen auch wirklich alle erforderlichen Daten eingegeben worden sind. Dies wollte ich vor den Speichern der Daten durchführen. Um diese Problem abzufangen, wollte ich es mit Try und Catch lösen, weil es wird die exceptions ja solange eingelöst bist wirklich etwas eintragen worden ist.

          jsulmJ 1 Reply Last reply
          0
          • M M.W43

            Danke schön, für die Antworten und die Tipps, ich wollte es deswegen mit einer exceptions abfangen, damit ich prüfen kann das beim Anlegen auch wirklich alle erforderlichen Daten eingegeben worden sind. Dies wollte ich vor den Speichern der Daten durchführen. Um diese Problem abzufangen, wollte ich es mit Try und Catch lösen, weil es wird die exceptions ja solange eingelöst bist wirklich etwas eintragen worden ist.

            jsulmJ Offline
            jsulmJ Offline
            jsulm
            Lifetime Qt Champion
            wrote on last edited by
            #5

            @M-W43 Dafür brauchst du keine Exceptions. Einfaches if() reicht ja schon. Außerdem benutzt man Exceptions normallerweise nicht um sie unmittelbar nach dem Werfen abzufangen. Wozu auch?

            void KundeNeu::check()
            {
                QString zahl1 = ui->lineEditVorname->text();
                if(zahl1.isEmpty()){
                   ui->lineEditVorname->setFocus();
                   return;
                }
                
                speichern();
            }
            

            Ist doch viel einfacher und klarer, oder?

            https://forum.qt.io/topic/113070/qt-code-of-conduct

            1 Reply Last reply
            2
            • M Offline
              M Offline
              M.W43
              wrote on last edited by
              #6

              Vielen danke habe gerade ausprobiert, und es funktioniert.

              1 Reply Last reply
              0
              • AxelViennaA Offline
                AxelViennaA Offline
                AxelVienna
                wrote on last edited by
                #7

                ...auch den Umweg über zahl1 (seltsamer Name für einen String) kannst Dir sparen:

                if (ui->lineEditVorname->text().isEmpty()) return ui->lineEditVorname->setFocus();
                

                ...und Du stellst bestimmt über einen Validator sicher, dass der Vorname keinen Topfen enthält wie zB ".,+# /*- ".

                C++ and Python walk into a bar. C++ reuses the first glass.

                JoeCFDJ 1 Reply Last reply
                0
                • AxelViennaA AxelVienna

                  ...auch den Umweg über zahl1 (seltsamer Name für einen String) kannst Dir sparen:

                  if (ui->lineEditVorname->text().isEmpty()) return ui->lineEditVorname->setFocus();
                  

                  ...und Du stellst bestimmt über einen Validator sicher, dass der Vorname keinen Topfen enthält wie zB ".,+# /*- ".

                  JoeCFDJ Offline
                  JoeCFDJ Offline
                  JoeCFD
                  wrote on last edited by
                  #8

                  @AxelVienna

                  if (ui->lineEditVorname->text().simplified().isEmpty()) {
                       return ui->lineEditVorname->setFocus();
                  }
                  
                  1 Reply Last reply
                  1

                  • Login

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Categories
                  • Recent
                  • Tags
                  • Popular
                  • Users
                  • Groups
                  • Search
                  • Get Qt Extensions
                  • Unsolved