Ausnahmebehandlung in AppleScript

Dieser Beitrag ist eine Fortsetzung des Artikels „Backup-Skript mit AppleScript erstellen“. In jenem Tutorial wurde gezeigt, wie rsync (für das Erstellen eines Backups) mit AppleScript kombiniert werden kann. Der dazugehörige Code sah folgendermaßen aus:

-- Daten mit rsync sichern
-- Version 1.0

-— Ausführung bestätigen
set theDialogText to "Dieses Programm sichert alle Dateien des Ordners 'Artikel' auf den USB-Stick. Soll das Backup gestartet werden?"

display dialog theDialogText with icon caution

-- rsync aufrufen
do shell script "rsync -av --delete /Users/bodo/Desktop/Artikel/ /Volumes/Backups/Artikel"

Grundsätzlich mag dieses Skript einwandfrei seinen Dienst verrichten, problematisch wird es aber, sobald ein Fehler auftritt. So könnte es beispielsweise sein, dass der USB-Stick nicht angeschlossen wurde. Bei so einem Fehler wird dieses Skript einfach abbrechen (und gegebenenfalls eine kryptische Fehlermeldung anzeigen).

Hier kommt jetzt die Ausnahmebehandlung zum tragen, die einen möglichen Fehler abfangen würde. Dazu wird der auszuführende Code in einen try-Block eingefügt:

try
    do shell script "rsync -av --delete /Users/bodo/Desktop/Artikel/ /Volumes/Backups/Artikel"
end try

Es bietet sich an, für den Fall des Auftretens eines Fehlers, den Nutzer hierüber in Kenntnis zu setzen:

on error
    display dialog "Es ist ein Fehler aufgetreten!" with icon stop

Durch den Zusatz with icon stop wird zusätzlich zur Ausgabe des Textes, ein Icon angezeigt.

Der komplette Code sieht nun wie folgt aus:

-- Daten mit rsync sichern
-- Version 1.0

-- Ausführung bestätigen
set theDialogText to "Dieses Programm sichert alle Dateien des Ordners 'Artikel' auf den USB-Stick. Soll das Backup gestartet werden?"
display dialog theDialogText with icon caution

try
    -- rsync aufrufen
    do shell script "rsync -av --delete /Users/bodo/Desktop/Artikel/ /Volumes/Backups/Artikel"
    display notification "Das Backup wurde erfolgreich durchgeführt!"
on error
    -- Fehler-Dialog anzeigen
    display dialog "Es ist ein Fehler aufgetreten!" with icon stop
end try

Wie Ihr sehen könnt, habe ich noch eine weitere Zeile hinzugefügt:

display notification "Das Backup wurde erfolgreich durchgeführt!"

Bei erfolgreicher Durchführung wird dadurch ebenfalls eine Mitteilung angezeigt, so dass der Nutzer weiß, dass der Backup-Vorgang beendet wurde.