다음을 통해 공유


try...catch...finally 문

JScript의 오류 처리를 구현합니다.

try {
   [tryStatements]
} catch(exception) {
   [catchStatements]
} finally {
   [finallyStatements]}

인수

  • tryStatements
    선택적 요소로서, 오류가 발생할 수 있는 문입니다.

  • 예외
    필수적 요소로서, 임의의 변수 이름입니다. exception의 초기 값은 throw된 오류 값입니다.

  • catchStatements
    선택적 요소로서, 연결된 tryStatement에서 발생하는 오류를 처리하는 문입니다.

  • finallyStatements
    선택적 요소로서, 다른 모든 오류가 처리된 후 무조건 실행되는 문입니다.

설명

try...catch...finally 문을 사용하면 코드를 실행하면서도 코드 블록에서 발생할 수 있는 오류의 일부 또는 전부를 처리할 수 있습니다. 프로그래머가 처리하지 않은 오류가 발생하면 JScript는 마치 오류를 처리하지 않은 것처럼 사용자에게 보통의 오류 메시지를 제공합니다.

tryStatement 인수는 오류가 발생할 수 있는 코드를 포함하고 catchStatements는 실제로 발생하는 오류를 처리하는 코드를 포함합니다. tryStatement에 오류가 발생하면 프로그램 제어는 catchStatements로 넘어가 처리됩니다. exception의 초기 값은 tryStatement에서 발생한 오류 값입니다. 오류가 발생하지 않으면 catchStatements는 실행되지 않습니다.

오류가 발생한 tryStatement와 관련된 catchStatements에서 오류를 처리할 수 없으면 throw 문을 사용하여 오류를 상위 오류 처리기로 다시 throw하십시오.

tryStatement의 모든 문이 실행되고 catchStatements에서 모든 오류가 처리되면 finallyStatements의 문이 무조건 실행됩니다.

finallyStatements 내의 코드는 try 또는 catch 블록 내에 return 문이 있거나 catch 블록에서 오류를 throw해도 실행됩니다. 처리되지 않은 오류(예를 들어, catch 블록 내에서 런타임 오류를 일으키는)가 발생하지 않은 경우 모든 finallyStatements가 실행됩니다.

참고

이와 같이 혼동될 수 있는 상황을 피하려면 finally 블록에서 return 문을 사용하지 마십시오. finally 블록의 코드는 trycatch 블록의 return 문을 만난 후, return 문이 실행되기 전에 실행됩니다. 이러한 경우 finally 블록의 return 문은 초기 return 문이 실행되기 전에 실행되어 결과적으로 다른 반환 값을 생성합니다.

예제

설명

다음 예제에서는 오류를 throw하고 오류 메시지, 코드 및 이름을 표시합니다.

코드

try
{
    var arr = new Array(-1);
}
catch(e)
{
    print ("Error Message: " + e.message);
    print ("Error Code: " + (e.number & 0xFFFF))
    print ("Error Name: " + e.name);
}

// Output:
//  Error Message: Array length must be zero or a positive integer
//  Error Code: 5029
//  Error Name: RangeError

설명

다음 예제는 JScript 예외 처리 방법을 보여 줍니다.

코드

try
    {
    print("Outer try is running");
 
    try
        {
        print("Nested try is running");
        throw new Error(301, "an error");
        }
    catch(e)
        {
        print("Nested catch caught " + e.message);
        throw e;
        }
    finally
        {
        print("Nested finally is running");
        }   
    }
catch(e)
    {
    print("Outer catch caught " + e.message);
    }
finally
    {
    print("Outer finally is running");
    }

// Output:
//  Outer try is running
//  Nested try is running
//  Nested catch caught an error
//  Nested finally is running
//  Outer catch caught an error
//  Outer finally is running

요구 사항

버전 5

참고 항목

참조

throw 문

Error 개체