Nach dem compilen, Fehlermeldungen verallgemeinern oder entfernen?

  • Hallo,

    ich würd gerne nach dem compilen jede Art von Fehlermeldung entfernen, ich meine jetzt nicht, den Fehler zu entfernen (klar das sowieso), aber z.b. dass dann Arrayfehlermeldungen dann nicht als Arrayfehlermeldung erscheinen sondern als z.B: Skript hat ein Fehler -> Crash. Oder das Skript crasht ohne Meldung.

    Danke

  • Ich würde die Meldungen an deiner Stelle im Skript lassen, dann aber auch mit aussagekräftigen Texten.
    Das Skript könnte zum Beispiel einige Daten über die letzten Aktionen des Benutzers sowie eine eindeutige Fehlernummer ausgeben und den Benutzer bitten, den Programmierer zu kontaktieren. So weißt du wo ein Fehler auftritt und kannst gegebenenfalls ein Update veröffentlichen.

    • Offizieller Beitrag

    aber z.b. dass dann Arrayfehlermeldungen dann nicht als Arrayfehlermeldung erscheinen sondern als z.B: Skript hat ein Fehler -> Crash


    Sorry - aber so etwas DARF in einem kompilierten Skript nicht auftreten. Dann hast du fehlerhaft programmiert.
    Bis zu 60 % macht das ordentliche Errorhandling in einem Programm aus. Du mußt jede noch so absurde Situation vorhersehen und abfangen. Crashen darf ein Skript niemals.
    Die einzig zulässigen Fehlermeldungen sind Infos an den User, wenn er Fehleingaben getätigt hat.

    • Offizieller Beitrag

    kommen wir zurueck zu meiner Frage


    Das war eine Antwort auf deine Frage! Das Vermeiden und Abfangen von Fehlern ist die einzig akzeptable Lösung.
    Du willst doch nicht ernsthaft Fehlbedienungen ermöglichen und wartest jetzt auf die Eierlegende Wollmilchsau, die diese Fehler für dich abstellt.. :wacko:

  • Ich habe schon mal gesagt, dafuer habe ich die Logdatei, die alles mit schreibt und die man dann direkt per .exe an mich senden kann. Mach mal daraus nicht mehr als es ist, herrje...

  • howdy,

    klar errorhandling ist das A und O.. aber um seine eig. frage zu beantworten..

    ich gehe davon aus das er die crashmeldungen einer kompilierten exe meint..
    die kann man beispielsweise mit reshack editieren..

    ich verstehe den sinn daran jemanden nicht zwingend wissen zu lassen das es sich um ein autoit programm geht und an welcher stelle, was passiert...


    mfg
    sgtigram

    • Offizieller Beitrag

    ich verstehe den sinn daran jemanden nicht zwingend wissen zu lassen das es sich um ein autoit programm geht und an welcher stelle, was passiert...


    ..und ich finde die Fragestellung selbst absurd. Es will mir einfach nicht in den Schädel, dass man sich so konsequent gegen Error-Handling sperrt. Eine Logdatei ist alles Mögliche - aber garantiert kein Error-Handling!
    Das, was hier beim kompilierten Skript abgefangen werden soll, tritt doch niemals auf, wenn ein ordentliches Error-Handling existiert. Verzeiht meine Sturheit, aber ich sehe hier nur kein wirkliches Problem.
    Ich komm mir gerade vor, wie ein Prediger: "Nimm nicht Weg A, dort fällst du in ein Loch" - "Ich weiß, dass da ein Loch ist, aber sag mir, wie ich am Besten in das Loch falle, ohne mir weh zu tun." :wacko:

  • [Ironie] Schreib doch ein zweites Script das die Meldungen wegklickt [/Ironie]

    Ich stimme BugFix zu.
    Soweit ich weiß liefert Autoit keine Möglichkeit diese Meldungen zu unterdrücken.
    Anstatt die Energie zu verschwenden eine Möglichkeit zu finden solltest du lieber die Fehler beseitigen.

  • Gute Programme bestehen zu 60% aus Error-Handling.
    Schlechte Programme bestehen zu 60% aus Fehlermeldungen... Siehe Windows. :wacko:

    Das war viel mehr ein Zitat. Tatsächlich ist es so, dass außerhalb des Einflussbereiches des Benutzers und des Programmierers noch Fehler auftreten können. Als Beispiel sei hier ein Skript genannt, welches über das Internet/Netzwerk kommuniziert. Wenn keine Internetverbindung vorhanden ist, liegt das garantiert nicht am Programmierer und meist auch nicht am User. Und wenn es doch am User liegt, so ist trotzdem eine Fehlermeldung angebracht. Dazu kannst du ja einen Error-Code mit entsprechender Beschreibung werfen.

    Ein kleines Beispiel, wie ich ein solches System realisieren würde:

    Spoiler anzeigen
    [autoit]


    Global $o_ERRORS = ObjCreate("Scripting.Dictionary")

    [/autoit] [autoit][/autoit] [autoit]

    Global Enum $_ERRCODE, $_ERRTEXT, $_CRITICAL

    [/autoit] [autoit][/autoit] [autoit]

    Func _Error_Add($sIdentifier, $iErrorCode, $sErrorText, $fCritical = False)
    Local $aErrorData[3]
    $aErrorData[$_ERRCODE] = $iErrorCode
    $aErrorData[$_ERRTEXT] = $sErrorText
    $aErrorData[$_CRITICAL] = $fCritical

    [/autoit] [autoit][/autoit] [autoit]

    $o_ERRORS($sIdentifier) = $aErrorData
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Error_Throw($sIdentifier)
    Local $aErrorData = $o_ERRORS($sIdentifier)
    $iOldOpt = Opt("GUIOnEventMode", False) ;OnEvent deaktivieren
    $hWnd = GUICreate("Fehler " & $aErrorData[$_ERRCODE], 300, 200)
    $cCaption = GUICtrlCreateLabel("Fehlercode: " & $aErrorData[$_ERRCODE] & @CRLF & @CRLF & $aErrorData[$_ERRTEXT] & @CRLF & @CRLF & "Wenn Sie das Problem nicht selber beheben können, informieren Sie bitte den Entwickler!", 20, 20, 260, 120)
    $cOK = GUICtrlCreateButton("Ok", 20, 150, 260, 40)
    GUISetState()
    While True
    Switch GUIGetMsg()
    Case -3, $cOK
    If $aErrorData[$_CRITICAL] Then
    Exit
    Else
    ExitLoop
    EndIf
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    GUIDelete()
    Opt("GUIOnEventMode", $iOldOpt)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    _Error_Add("windows", "42", "Sie nutzen ein Microsoft Windows Betriebssystem!")
    _Error_Throw("windows")

    [/autoit]

    lg ^^