Applescript有一个类似于PHP的“退出”或“死”命令吗?

时间:2011-11-16 19:56:12

标签: macos error-handling applescript

如何在Applescript中抛出错误并退出?我希望得到类似PHP的dieexit命令,以便“完成”对话框不会触发。

function1()
display dialog "completed"

on function1()
    function2()
end function1

on function2()
    exit //what do i use here?
end function2

以下是我尝试过的答案:

function1()
display dialog "completed"

on function1()
    function2()
end function1

on function2()

    try
        display dialog "Do you want to catch an error?" buttons {"Continue without error", "Cause an error"} default button 2
        if button returned of result is "Cause an error" then
            error "I'm causing an error and thus it is caught in 'on error'"
        end if
        display dialog "completed without error"
    on error theError
        return theError -- this ends the applescript when an error occurs
    end try


end function2

1 个答案:

答案 0 :(得分:5)

试试这个;)

-- errors are only handled inside of a "try" block of code
try
    display dialog "Do you want to catch an error?" buttons {"Continue without error", "Cause an error"} default button 2
    if button returned of result is "Cause an error" then
        error "I'm causing an error and thus it is caught in 'on error'"
    end if
    display dialog "completed without error"
on error theError
    return theError -- this ends the applescript when an error occurs
end try

编辑:根据您的评论...只返回您的功能值。检查主代码中返回的值,并调用函数,返回值将告诉您是否应该“退出”应用程序。因此,这是解决您的示例问题的一种方法......

set returnValue to function1()

-- we check the return value from the handler
if returnValue is not true then return -- this "quits" the script

display dialog "completed"

on function1()
    set returnValue to function2()
    return returnValue
end function1

-- note that when there is no error the the script returns true.
-- so we can check for that and actt appropriately in the main script
on function2()
    try
        display dialog "Do you want to catch an error?" buttons {"Continue without error", "Cause an error"} default button 2
        if button returned of result is "Cause an error" then
            error "I'm causing an error and thus it is caught in 'on error'"
        end if
        display dialog "completed without error"
        return true
    on error theError
        return theError -- this ends the applescript when an error occurs
    end try
end function2