Programm Logik nach Fehler brauche Ideen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 26 Antworten in diesem Thema. Der letzte Beitrag () ist von Amelie.

    RodFromGermany schrieb:

    Wozu?
    Da wäre doch ein Haltepunkt effektiver
    Ein Haltepunkt allein, wäre vollständig wirkungslos bei dem Thema, auf das ich geantwortet gehabt hatte, denn der wird dich nicht vom Try in den Catch Block wechseln lassen.
    Aber ja etwas so ähnliches habe ich direkt im Anschluss vorgeschlagen. Da ist ein Haltepunkt aber auch nicht nötig, es geht ja erstmal ums Ergebnis, debuggt wird erst wenns nicht stimmt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Haudruferzappeltnoch“ ()

    @RodFromGermany

    ​Dann provoziere einen Fehler und reagiere darauf.

    Ich weiß leider nicht wie?

    Ich habe die Settings.xml mal mit einem Schreibschutz versehen, da wirft dann aber eine andere Exception.
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Wenn ich z.B. der Settings.xml einen Schreibschutz gebe, greift die Exception in dieser Sub!

    VB.NET-Quellcode

    1. Private Sub SaveSettings(filePath As String, sourceDrive As String, targetDrive As String)
    2. ...
    3. ' Die XML-Datei speichern
    4. xmlDoc.Save(filePath)
    5. RaiseEvent SaveSuccesfull(Me, New EventClasses.SaveSuccesfullEventArgs(SaveMessage))
    6. ' Erfolgsmeldung protokollieren
    7. GlobalEventLogger.ExceptionToFile(String.Format(SuccessMessage, filePath), ExceptionStatus.Success)
    8. Catch ex As Exception
    9. ' Fehler protokollieren
    10. GlobalEventLogger.ExceptionToFile(String.Format(FailureSaveMessage, filePath, NewCrlLf, ex.Message), ExceptionStatus.Failure)
    11. End Try
    12. End Sub
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Na in der GetEnvironmentData wird doch nur diese SaveSettings Methode aufgerufen, die anderen Zeilen sind nur Zuweisungen. Und Exceptions knallen generell erstmal in der untersten Schublade.
    Und wenn du die in so einer Schublade schon abfänst, dann ist weiter oben wieder alles frisch.
    Machst du in SaveSettings das Try Catch weg, greift Catch ne Ebene weiter oben

    Amelie schrieb:

    Ich weiß leider nicht wie?
    Z.B.:
    Du kannst die Settings-Datei manipulieren.
    oder

    Haudruferzappeltnoch schrieb:

    du schreibst ein Throw New Exception an die Stelle die dich interessiert,

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Moin moin

    Habe die Klasse nochmal umgebaut und einigen Tests unterzogen.
    Fehler, soweit ich welche simulieren konnte, werden richtig protokoliert usw. :)

    Spoiler anzeigen

    VB.NET-Quellcode

    1. ' Eine Klasse zum Speichern der aktuellen Anwendungseinstellungen in einer XML-Datei
    2. Public Class SaveManager
    3. ' Eine private, statische Instanz der Klasse, um das Singleton-Muster zu implementieren
    4. Private Shared ReadOnly _instance As New SaveManager()
    5. ' Öffentliche Eigenschaft zum Zugriff auf die Singleton-Instanz
    6. Public Shared ReadOnly Property Instance As SaveManager
    7. Get
    8. Return _instance
    9. End Get
    10. End Property
    11. ' Pfad zur XML-Datei aus der Umgebungsinformationen abrufen
    12. Private ReadOnly filePath As String = EnvironmentManager.Instance.XmlFilepath
    13. ' Ereignis, das ausgelöst wird, wenn das Speicher erfolgreich war.
    14. Public Event SaveSuccesfull As EventHandler(Of EventClasses.SaveSuccesfullEventArgs)
    15. ' Meldungstexte
    16. Private Const SuccessMessage As String = "Die Programm-Konfiguration wurden erfolgreich in {0} gespeichert."
    17. Private Const FailureSaveMessage As String = "Fehler beim Speichern der Programm-Konfiguration in die Datei {0}{1}{2}."
    18. Private Const LableSaveMessage As String = "Das Speichern der Daten war erfolgreich."
    19. ' Das XML-Document erstellen
    20. Private Function CreateXmlDocument(sourceDrive As String, targetDrive As String) As XmlDocument
    21. Dim xmlDoc As New XmlDocument()
    22. Dim rootNode As XmlNode = xmlDoc.CreateElement("Application")
    23. xmlDoc.AppendChild(rootNode)
    24. Dim settingsNode As XmlNode = xmlDoc.CreateElement("DriveSettings")
    25. rootNode.AppendChild(settingsNode)
    26. Dim sourceNode As XmlNode = xmlDoc.CreateElement("SourceDrive")
    27. sourceNode.InnerText = sourceDrive
    28. settingsNode.AppendChild(sourceNode)
    29. Dim targetNode As XmlNode = xmlDoc.CreateElement("TargetDrive")
    30. targetNode.InnerText = targetDrive
    31. settingsNode.AppendChild(targetNode)
    32. Return xmlDoc
    33. End Function
    34. ' Das XML-Dokument speichern
    35. Private Sub SaveXmlDocument(xmlDoc As XmlDocument, filePath As String)
    36. xmlDoc.Save(filePath)
    37. End Sub
    38. ' Die Einstellungen speichern
    39. Public Sub SaveSettings()
    40. Try
    41. ' Quell- und Ziel-Laufwerke aus der Umgebungsinformationen abrufen
    42. Dim sourceDrive As String = EnvironmentManager.Instance.SourceDrive
    43. Dim targetDrive As String = EnvironmentManager.Instance.TargetDrive
    44. Dim xmlDoc As XmlDocument = CreateXmlDocument(sourceDrive, targetDrive)
    45. SaveXmlDocument(xmlDoc, filePath)
    46. ' Erfolgsmeldung protokollieren / anzeigen
    47. GlobalEventLogger.ExceptionToFile(String.Format(SuccessMessage, filePath), ExceptionStatus.Success)
    48. RaiseEvent SaveSuccesfull(Me, New EventClasses.SaveSuccesfullEventArgs(LableSaveMessage))
    49. Catch ex As Exception
    50. ' Fehler protokollieren
    51. GlobalEventLogger.ExceptionToFile(String.Format(FailureSaveMessage, filePath, NewCrlLf, ex.Message), ExceptionStatus.Failure)
    52. End Try
    53. End Sub
    54. End Class

    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh: