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
On Error Goto....gibt es so etwas auch in AutoIt?
-
- [ offen ]
-
Andy -
3. September 2009 um 18:08 -
Geschlossen -
Erledigt
-
-
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" -
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
[autoit]
EIn Anfang wäre dochIf @error Then
[/autoit]
;Funktion
EndIfIn 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.
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... -
Die Tastatur ist nicht angeshlossen, bitte drücken sie eine Taste
Andy.
Meinst Du diesen hier?
autoit.de/wcf/attachment/5961/Oder diesen?
autoit.de/wcf/attachment/5962/Oder doch eher diesen hier:
autoit.de/wcf/attachment/5963/ -
Schnuffel,
vielen Dank, ich hatte das Script übersehen, solltest du auch mal testen, genau das habe ich gesucht!^^ZitatEs 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....
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, stundenlangZitatein 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