# Else

如果相关联语句的主体没有执行, 指定一个或多个语句去执行.

    Else 语句

    Else
    {
        语句
    }

## 备注

Else 的每次使用都必须附属于(与之关联的) 其上方的 If 语句, Catch, For, Loop 或 While 语句. Else 始终附属于其上方最近的且无主的语句, 除非使用区块来改变该行为. Else 语句执行的条件取决于关联语句:

- If 表达式: 表达式计算为假.
- For, Loop(任何类型), While: 循环的迭代次数为零.
- Loop Read: 如上所述, 但是 Else 的存在也可以防止在没有找到文件或路径时抛出错误. 因此, 如果文件为空或不存在, Else 就会执行.
- Try...Catch: 在 try 块中没有抛出异常.

Else 可以在同一行上紧跟着任何其他的单个语句. 这通常用于 "else if" 梯形结构(请参阅底部的例子).

如果 Else 拥有多行, 那么这些行必须用大括号括起来(创建一个区块). 但是, 如果只有一行属于 Else, 则大括号是可选的. 例如:

    if (count > 0)  ; 下一行可以不需要使用大括号括住, 因为它只有单独一行.
        MsgBox "Press OK to begin the process."
    else  ; 下面这部分必须使用大括号括起来, 因为它含有多行.
    {
        WinClose "Untitled - Notepad"
        MsgBox "There are no items present."
    }

One True Brace(OTB) 风格可以用于 Else 前后. 例如:

    if IsDone {
        ; ...
    } else if (x < y) {
        ; ...
    } else {
        ; ...
    }

## 相关

区块, If, 控制流语句

## 示例

Else 语句的常见用法. 本例执行如下:

1. 如果记事本存在:
   1. 激活它
   2. 发送字符串 "This is a test." 然后是 `Enter`.
2. 否则(即如果记事本不存在):
   1. 激活另一个窗口
   2. 在坐标 100, 200 处左击

    if WinExist("Untitled - Notepad")
    {
        WinActivate
        Send "This is a test.{Enter}"
    }
    else
    {
        WinActivate "Some Other Window"
        MouseClick "Left", 100, 200
    }

展示 Else 语句可以使用的不同的样式.

    if (x = 1)
        firstFunction()
    else if (x = 2) ; "else if" 类型
        secondFunction()
    else if x = 3
    {
        thirdFunction()
        Sleep 1
    }
    else defaultFunction()  ; 即任何单个语句都可以和 Else 放在同一行.

如果一个循环的迭代次数为零, 则执行一些代码.

    ; 显示文件或 Internet Explorer 窗口/标签页.
    for window in ComObject("Shell.Application").Windows
        MsgBox "Window #" A_Index ": " window.LocationName
    else
        MsgBox "No shell windows found."

dftg