On Error Goto....gibt es so etwas auch in AutoIt?

  • Hi.
    das Topic sagt alles, ich bin heute über ein 20 Jahre altes Basic-Programm gestolpert und mir ist aufgefallen, daß ich solch eine Funktion in AutoIt noch nicht gesehen habe?!
    Damals wars einfach, nach jeder Funktionsdeklaration war die erste Variable $Fehlercode=xxxx .
    Trat ein irgendwie verursachter Fehler auf, wurde durch das "On Error Goto/Gosub" eine Funktion angesprungen und dort konnte der Fehlercode abgewickelt/angezeigt werden.
    Ja, mir ist auch klar, daß es "schlechter Stil" ist, Fehler sollten erst garnicht auftreten oder per @error-handling abgefangen werden, aber das nützt alles nichts wenn jemand anruft und fragt was er falsch gemacht hat, "Die Fehlermeldung heißt 1.#INF und ist in der Zeile -1 aufgetreten!". Klasse....
    Gibt es ggf einen "Windows-Fehler-Handler" den man umbiegen könnte?^^
    thx vorab
    Andy

  • Nein. Das wurde nicht engebaut, da es wie du schon gesagt hast, schlechter Stil ist.
    Du musst eben ein besseres @error-Handling machen, als nur den Text "Fehler in Zeile" :P

  • Naja, schreib das mal den Entwicklern, die diese "professionelle" Fehlermeldung implementiert haben^^
    Und da lachen die Leute über:" Die Tastatur ist nicht angeshlossen, bitte drücken sie eine Taste!". Das hat richtig Stil gegenüber "Error in line-1". Der smilie hat ausgelacht....

  • Das mit Zeile -1 kann man nicht ändern. Nur bei unkompilierten Skripten gibt es eine Zeilenangabe.
    Und wenn du ordentlich programmierst, bekommen die Anwender die AutoIt-Fehlermeldungen auch nicht mehr zu Gesicht. Die sind für den Entwickler (dich) und nicht die Bemutzer gemacht.

  • Hallo
    EIn Anfang wäre doch

    [autoit]

    If @error Then
    ;Funktion
    EndIf

    [/autoit]

    In der Funktion kann man dann jedoch nicht die Zeile herausfinden, denn das Skript bricht ja ab.

    Du kannst höchstens in jeder Scriptzeile nen FilWrite in eine Temp Datei machen.
    Dann Über die Funktion die bei @error angesprochen wird, auslesen welche Zahl da steht.
    Das ist dann die letzte Funktionierende Zeile.
    Ist natürlich umständlich..
    Aber wäre das, was du suchst =D

  • Zitat

    Aber wäre das, was du suchst =D

    Nein, das ist das, was ich bereits habe^^. Und auch versuche, es weitgehend zu nutzen.
    Während der Entwicklung ist es kein Problem, mit tracelines oder Debug to Console/Msgbox das Script zu "überwachen", bzw. eventuelle Fehler aufzuspüren. Die Fehler werden ja (wenn nicht z.B. mit @Error abgefangen) im mehr oder minder "Klartext" angezeigt.
    Aber wenn in einem kompilierten Script z.B. ein unvorhergesehener Fehler auftritt, erscheint dieselbe kryptische Fehlermeldung, sogar inclusive (nicht vorhandener) Zeilennummer.
    Mit der "On Error"-Methode verhindert man nicht den Fehler, sondern stellt dem Programm-Benutzer eine Info zur Verfügung, die man selbst bestimmen kann. In letzter Zeit habe ich mit einigen Programmen gearbeitet, die im Fehlerfall fragen, ob sie dem Entwickler eine Mail schreiben dürfen mit allen greifbaren Infos. Von Entwicklerseite her halte ich das für extrem sinnvoll!
    Es wird nie völlig fehlerfreie Software geben, das ist klar! Allein die Klimmzüge, die man bei AutoIt machen muss, um ein Script auf XP, Vista, Windows 2000, WIN7, und den 64-Bit-Versionen davon laufen lassen zu können, sind nicht ohne....
    Da würde eine Fehlermeldung "Es ist ein unvorhergesehener Fehler im Modul XYZ in der Funktion ABC vorgekommen! Sie können diese Information per Mail an den Entwickler schicken, bitte klicken sie dazu blablabla..." meines Erachtens wesentlich besser passen wie ein Fensterchen mit "AutoIt-Fehler, Error in line-1, 1.INF".
    Komischerweise ist das Abfangen von Fehlern in COM-Objekten überhaupt kein Problem....

  • Okay.^^
    Das ist natürlich günstig.
    An solche Meldungen hatte ich noch nicht gedacht.
    Du hast mir ein paar Inspirationen gegeben =D
    Damit kann man seine Skripts verbessern, wenn alles ausgereift ist :)

  • Zitat

    Damit kann man seine Skripts verbessern, wenn alles ausgereift ist :)

    Genau DAS ist das Ziel!

    • Offizieller Beitrag

    Aber wenn in einem kompilierten Script z.B. ein unvorhergesehener Fehler auftritt


    Versteh mich nicht falsch, aber unvorhergesehene Fehler gibt es nicht wirklich. Ich habe die Erfahrung gemacht, dass in der Regel ich der Trottel war, der vergessen hat ein mögliches Fehlerszenario zu berücksichtigen. :D
    Es ist leider so, das ein Skript zu 1/3 aus Programm und zu 2/3 aus Errorhandling besteht, wenn du alle Usergemeinheiten abfangen willst. ;)

  • zum Error-Handling habe ich mal was im engl. Forum ausgegraben.
    Hab es selber noch nicht probiert,
    aber vielleicht ist es ja für den ein oder anderen interessant...

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Die Tastatur ist nicht angeshlossen, bitte drücken sie eine Taste

    Andy.

    Meinst Du diesen hier? :rofl::rofl::rofl:
    autoit.de/wcf/attachment/5961/

    Oder diesen? :rofl::rofl::rofl:
    autoit.de/wcf/attachment/5962/

    Oder doch eher diesen hier: :rofl::rofl::rofl:
    autoit.de/wcf/attachment/5963/

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    Einmal editiert, zuletzt von Alina (3. September 2009 um 23:01)

  • Schnuffel,
    vielen Dank, ich hatte das Script übersehen, solltest du auch mal testen, genau das habe ich gesucht!^^

    BugFix

    Zitat

    Es ist leider so, das ein Skript zu 1/3 aus Programm und zu 2/3 aus Errorhandling besteht, wenn du alle Usergemeinheiten abfangen willst.

    hehe, das bringt mich auf eine Idee für ein µ-It.
    Man schreibt ein Script mit bestimmten Vorgaben an Funktionen und alle anderen "gemeinen" User müssen so viele "Fehler" wie möglich produzieren. Das Script mit den wenigsten "Abstürzen" gewinnt.... :D
    Aber Ernst beiseite, du hast ja völlig Recht. Das Problem ist nur, daß eigentlich jeder Programmierer die "dunklen Stellen" in seinem Code kennt, und nur weil er zu faul ist, stundenlang

    Zitat

    ein mögliches Fehlerszenario zu berücksichtigen

    **wer ist schon so blöd und macht dasunddas?!**, steht nachher irgend ein DAU wie der Ochs vorm Berg und quält die Mädels von der Hotline....

    Alina
    auch sehr schön, aber die Meldung mit der Tastatur gab es bis vor einigen Jahren schon beim Rechnerstart vom BIOS. Damit sich die BIOS-Programmierer nicht dem Gelächter der gesamten Szene aussetzen mussten, haben sie die Meldung entfernt und den Betriebssystemprogrammierern überlassen. Die haben die Meldung dann in ein Fenster gebracht, toller Fortschritt!
    Ganz modern lässt man die Meldung komplett weg und überlässt es dem User herauszufinden, warum die Tastatur nicht oder nur teilweise funktioniert. Ich hätte Batterie-Hersteller werden sollen...für Tastaturen...DAS ist ein Markt mit Zukunft^^

    ciao
    Andy