Announcement

Collapse
No announcement yet.

nach Catch Prozedur beenden, abbruch

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • nach Catch Prozedur beenden, abbruch

    wie kann ich eine Prozedur nach eine Fehler beenden?

    try
    {
    cmd.ExecuteNonQuery();
    }
    catch (Exception e) //(InvalidCastException e)
    {
    CatchErrorToLogFile("ImportToTable", e.Message.ToString(), sSQL, sZeile);
    DialogResult dr = MessageBox.Show("ERROR ...MessageBoxButtons.OK);

    //return false;
    //Application.Exit();
    }

    Wenn Execute einen Fehler verursacht
    und mit Catch abgefangen wird,
    läuft die Routine nach der Messagebox immer wieder weiter,
    ich habe sozusagen eine endlosschleife erzeugt, weil immer wieder die unterroutine aufgerufen wird.

    Wie kann ich nach dem Catch die Routine (Prozedur, Ablauf...) abbrechen?
    //return false;
    //break;
    //Application.Exit();

    ... das geht alles nicht...

    Gruy Rayman

  • #2
    Hallo Rayman,

    Was ist, wenn du vor dem TRY-CATCH eine boolean Variable definierst, innerhalb von TRY-CATCH entsprechend gesetzt wird und nachher ausgewertet wird?

    Beispiel:
    bool isFailure = false;
    try
    { /* ... */ }
    catch
    { isFailure = true; }
    if (isFailure)
    { Application.Exit(); }
    *-- robert.oh. --*

    Comment


    • #3
      ist einen Idee, aber funktioniert nicht....

      catch (Exception e)
      {
      CatchErrorToLogFile("ImportToTable", e.Message.ToString(), sSQLstring[1], sZeile);
      DialogResult dr = MessageBox.Show("ERROR", MessageBoxButtons.OK);
      bBreak = true;
      }
      if (bBreak == true)
      { Application.Exit(); }

      das Programm läuft zwar nach dem Catch in die If - Application.exit
      aber dann läuft das Programm dennoch einfach weiter
      als wäre nichts gewesen...

      Comment


      • #4
        ich habe keine Ahnung warum Application.Exit();
        an dieser Stelle nicht funktioniert,
        aber nun habe ich eine effiziente Methode gefunden, die wirklich abbricht:

        System.Environment.Exit(0);

        Comment


        • #5
          Das ist aber wirklich die Holzhammer-Methode. Dabei weißt Du doch überhaupt nicht, in welchem Zustand die benutzten Klassen Deiner Anwendung verlassen werden. Beispielsweise könnte das Logfile noch nicht gespeichert sein.

          Eigentlich sucht man über try-catch-finally nach Wegen, dass das Programm seine Arbeit trotzdem fortsetzen kann. Jürgen

          PS. Code-Abschnitte lesen sich besser, wenn sie gekennzeichnet sind: Text markieren, '#'-Button benutzen.

          Comment


          • #6
            ja, ich weis, dass es an dieser Stelle etwas brutal ist so abzubrechen

            ich lese aus einer Textdatei und schreibe in die Datenbank,
            also sollte ich an der stelle wenigstens die connection schließen.

            datei.Close();
            datei.Dispose();
            con.Close();

            dann wär der Abbruch nicht ganz so übel

            Comment


            • #7
              Du solltest in jedem fall eine meldung ausgeben, dass das einlesen fehl geschlagen ist. Schliesslicht willst Du wissen ob der durchlauf erfolgreich war.

              Zusätzlich soll bei fehlerhafter datei vielleicht alles, was bereist in die Datenbank geschrieben wurde rückgängig gemacht werden.
              Gruss

              Mirko

              Mappen statt hacken mit dem .NET O/R Mapper Invist

              Comment

              Working...
              X