Wie erhalte ich in Applescript eine Zeilennummer oder einen Stack-Trace bei einem Fehler?

Ich schreibe einige ziemlich komplexe Applescripts, aber wenn etwas schief geht - Apple-Ereignis abgelaufen - oder ähnliches, kann ich nicht genau sagen, wo es fehlgeschlagen ist.

Im Moment verpacke ich alle Handler mit Try-Blöcken, mit einem on-Fehler, der den Fehler erneut auslöst, mit einem Verweis auf den Handlernamen und den Wert einer Variablen, die ich an verschiedenen Stellen im Handler gesetzt habe, damit ich das kann Isolieren Sie den Fehler irgendwo zwischen zwei Punkten.

** Gibt es eine Möglichkeit, Applescript dazu zu bringen, 'Apple event timed out at line 15 in await(), at line 60 in connectRemoteUser(), at line 90 in autostartTestUsers()' zu sagen, ohne alles direkt codieren zu müssen ?

Ich kann mich nicht auf die Hervorhebung des Standorts des Skripteditors verlassen, da die Fehler zeitweise auftreten, wenn das Skript nicht in Produktion ist.

Hast du dafür jemals eine Lösung gefunden? Ich teile deinen Frust.
@rubik'ssphere Leider nein. Glücklicherweise haben wir uns von AppleScript entfernt (das ich verwendet habe, um mehrere Desktops auf demselben Computer zu starten und mehrere Simulatoren auszuführen), weil Facebooks fbsimctl die Dinge viel einfacher gemacht hat. Wenn ich nie wieder Applescript-Abscheulichkeiten schreiben muss, werde ich ein glückliches Häschen sein.

Antworten (1)

Es ist hässlich, aber es funktioniert ...

try
    set marker to 1
    -- do stuff
    set marker to 2
    -- do stuff
    set marker to 3
    1 / 0
    set marker to 4
on error errMsg number errNum
    tell application "SystemUIServer"
        display alert (marker & space & errMsg & return & return & "Error number " & errNum as text) buttons "Cancel" cancel button "Cancel"
    end tell
end try
Das ist ziemlich genau das, was ich in der Frage gesagt habe: Ich fange bereits Fehler für alle Handler ab und erhöhe sie erneut und zeige nur den Dialog für den obersten an.