Невозможно прервать сценарий при ошибке в блоке Try с помощью Applescript - PullRequest
0 голосов
/ 18 января 2020

У меня есть простой блок try в Applescript, который пытается извлечь диск, и если он выдает ошибку, он должен прерваться («возврат»). Работает ... и правильно показывает ошибку, если файл с сервера открыт ... но не прерывается! Он полностью игнорирует «возвратную» линию и сохраняет право на грузоперевозки. Я не могу понять это.

try
    tell application "Finder" to eject disk "My Disk"
on error e
    display alert e
    return
end try

log "Code is still running if this is logged."

Это просто не остановится, даже если есть ошибка.

Обновление: Попробуйте этот код ...

try
    tell application "Finder" to eject disk "My Disk"
on error
    return
end try

log "Code is still running if this is logged."

Сбой таким же образом, но ошибка по-прежнему отображается! Блок try просто не перехватывает ошибку. Искатель показывает это. Это полностью обходит AppleScript полностью. Нет способа отловить эту ошибку в AppleScript.

Мой обходной путь заключается в следующем:

    try
        do shell script "diskutil unmount " & quoted form of "/Volumes/My Disk"
    on error
        eject disk "My Disk"
        return
    end try

Первая часть - это сценарий оболочки, который выдает ошибку в случае сбоя. Ошибка является обобщенной c и не очень полезна, поэтому после ее обнаружения я прошу Finder сделать то же самое, после чего выдается «неуловимая», но все еще полезная ошибка. Затем сценарий завершается, как задумано, и отображается нужная мне ошибка.

...