Try [v1.1.04+]

Çϳª ÀÌ»óÀÇ ¼­¼ú¹®µéÀ» (¸í·É¾î³ª Ç¥Çö½ÄÀ») throw ¸í·É¾î°¡ ´øÁö´Â ½ÇÇà½Ã°£ ¿¡·¯¿Í ¿¹¿Ü·ÎºÎÅÍ º¸È£ÇÕ´Ï´Ù.

Try Statement
Try
{
    Statements
}

³íÆò

try ¸í·É¾î´Â º¸Åë ´ÙÀ½¿¡ ºí·ÏÀÌ µû¶ó¿É´Ï´Ù - È°°ýÈ£·Î µÑ·¯ ½ÎÀÎ Çϳª ÀÌ»óÀÇ ¼­¼ú¹® (¸í·É¾î³ª Ç¥Çö½Ä). ÇϳªÀÇ ¼­¼ú¹®¸¸ ½ÇÇàÇÑ´Ù¸é, try¿Í °°Àº ÁÙ ¶Ç´Â ´ÙÀ½ ÁÙ¿¡ ¹èÄ¡ÇÒ ¼ö ÀÖ°í, È°°ýÈ£¸¦ »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù. try°¡ ¿¡·¯¸¦ ÀâÀ» ¶§ Á¤È®ÇÏ°Ô ÇÑ ¹ø¸¸ ½ÇÇàµÇ´Â Äڵ带 ÁöÁ¤ÇÏ·Á¸é, catch ¸í·É¾î¸¦ »ç¿ëÇϽʽÿÀ.

½ÇÇà½Ã°£ ¿¡·¯°¡ ÀϾ¸é throw ¸í·É¾î ¶Ç´Â ÇÁ·Î±×·¥ÀÌ ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. try ºí·Ï ¾È¿¡¼­ ¶Ç´Â ºí·Ï¿¡¼­ È£ÃâÇÑ ÇÔ¼ö ¾È¿¡¼­ ¿¹¿Ü°¡ ´øÁ®Áú ¶§, ´ÙÀ½°ú °°Àº ÀÏÀÌ ÀϾ´Ï´Ù:

try ºí·ÏÀÌ ½ÇÇà ÁßÀÌÁö ¾ÊÀº µ¿¾È¿¡ ¿¹¿Ü°¡ ´øÁ®Áö¸é, ¿¡·¯ ¸Þ½ÃÁö¸¦ º¸¿©ÁÖ°í ÇöÀç ¾²·¹µå¸¦ Á¾·áÇÕ´Ï´Ù.

One True Brace (OTB) ½ºÅ¸ÀÏÀ» ¼±ÅÃÀûÀ¸·Î try ¸í·É¾î¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

try {
    ...
} catch e {
    ...
}

°ü·Ã Ç׸ñ

Catch, Throw, Finally, ºí·Ï

¿¹Á¦

; ¿¹Á¦ #1: try/catch/throwÀÇ ±âº» °³³ä.

try  ; Äڵ带 ½ÇÇàÇØ º¾´Ï´Ù.
{
    HelloWorld()
    MakeToast()
}
catch e  ;  À§ÀÇ ºí·Ï¿¡¼­ ÀÏÀ¸Å² ù ¹ø° ¿¡·¯/¿¡¿Ü¸¦ ó¸®ÇÕ´Ï´Ù.
{
    MsgBox, ¿¹¿Ü°¡ ´øÁ®Á³½À´Ï´Ù!`n±¸Ã¼ÀûÀ¸·Î ´ÙÀ½°ú °°½À´Ï´Ù: %e%
    Exit
}

HelloWorld()  ; ¾ðÁ¦³ª ¼º°øÇÕ´Ï´Ù.
{
    MsgBox, Hello, world!
}

MakeToast()  ; ¾ðÁ¦³ª ½ÇÆÐÇÕ´Ï´Ù.
{
    ; try ºí·ÏÀÇ ¿¡·¯ 󸮿¡ °ð¹Ù·Î Á¡ÇÁÇÕ´Ï´Ù:
    throw A_ThisFunc " is not implemented, sorry"
}
; ¿¹Á¦ #2: ErrorLevel ´ë½Å¿¡ try/catch »ç¿ëÇϱâ.

try
{
    ; ´ÙÀ½ ¿¹Á¦´Â ¾î¶² À¯ÇüÀÇ ÆÄÀÏÀ» ¹é¾÷ÇÕ´Ï´Ù:
    FileCopy, %A_MyDocuments%\*.txt, D:\Backup\Text documents
    FileCopy, %A_MyDocuments%\*.doc, D:\Backup\Text documents
    FileCopy, %A_MyDocuments%\*.jpg, D:\Backup\Photos
}
catch
{
    MsgBox, 16,, ÆÄÀÏÀ» ¹é¾÷ÇÏ´Â µ¿¾È ¹®Á¦°¡ ÀÖ¾ú½À´Ï´Ù!
    ExitApp
}
; ¿¹Á¦ #3: COM ¿¡·¯ ´Ù·ç±â.

try
{
    obj := ComObjCreate("ScriptControl")
    obj.ExecuteStatement("MsgBox ""This is embedded VBScript""")
    obj.InvalidMethod() ; ÀÌ ÁÙÀº ½ÇÇà ½Ã°£ ¿¡·¯¸¦ ÀÏÀ¸Åµ´Ï´Ù.
}
catch e
{
    ; e¸¦ ´ã°í ÀÖ´Â °´Ã¼¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â Exception()¸¦ ÂüÁ¶ÇϽʽÿÀ.
    MsgBox, 16,, % "Exception thrown!`n`nwhat: " e.what "`nfile: " e.file
        . "`nline: " e.line "`nmessage: " e.message "`nextra: " e.extra
}
; ¿¹Á¦ #4: try-catch ¼­¼ú¹®µéÀ» ³»Æ÷Çϱâ.

try Example1() ; ÇÑ ÁÙ ¼­¼ú¹®Àº Try ¸í·É¾î¿Í °°Àº ÁÙ¿¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù.
catch e
    MsgBox, Example1() threw %e%.

Example1()
{
    try Example2()
    catch e
    {
        if e = 1
            throw e ; ¿¹¿Ü¸¦ ´Ù½Ã ´øÁ®¼­ È£ÃâÀÚ°¡ ¹ÞÀ» ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù.
        else
            MsgBox, Example2() threw %e%.
    }
}

Example2()
{
    Random, o, 1, 2
    throw o
}