오류 처리의 기초

Flash Player 9 이상, Adobe AIR 1.0 이상

런타임 오류는 ActionScript 코드에 문제가 발생하여 ActionScript 내용이 의도한 대로 실행되지 않는 것입니다. ActionScript 코드가 올바르게 실행되도록 하려면 응용 프로그램 내에서 오류를 처리하는 코드를 작성합니다. 이 코드는 오류를 수정 및 해결하거나 적어도 사용자에게 오류가 발생했음을 알리는 역할을 합니다. 이 프로세스가 바로 오류 처리 프로세스입니다.

오류 처리는 컴파일 중이나 응용 프로그램이 실행되는 동안 throw되는 수많은 오류에 대한 응답 등이 포함된 광범위한 범주입니다. 컴파일 작업 시 발생하는 오류는 쉽게 확인되는 경우가 많습니다. SWF 파일 생성 프로세스를 완료하기 위해서는 이 오류를 수정합니다.

런타임 오류는 오류 코드를 실제로 실행할 경우에만 발생하기 때문에 감지하기가 쉽지 않습니다. if..then..else 문처럼 프로그램의 한 세그먼트에 여러 개의 코드 분기가 있을 경우, 코드에 오류가 없음을 확인하기 위해 실제 사용자가 입력할 수 있는 가능한 모든 입력 값을 사용하여 가능한 모든 조건을 테스트합니다.

런타임 오류는 두 가지 범주로 구분할 수 있습니다. 프로그램 오류는 메서드 매개 변수에 잘못된 데이터 유형을 지정하는 것과 같은 ActionScript 코드 내 오류를 뜻하며, 논리 오류는 자금 관리용 프로그램에서 잘못된 공식으로 이율을 계산하는 경우 등의 프로그램의 논리(데이터 확인 및 값 조작) 오류입니다. 다시 말하지만, 이 두 유형의 오류 모두 대개 응용 프로그램을 꼼꼼히 테스트함으로써 사전에 감지하고 수정할 수 있습니다.

가장 이상적인 것은 최종 사용자에게 응용 프로그램을 릴리스하기 전에 모든 오류를 식별하여 제거하는 것이지만, 모든 오류를 사전에 발견하거나 예방하는 것은 불가능합니다. 예를 들어 ActionScript 응용 프로그램이 프로그래머가 통제할 수 없는 특정 웹사이트로부터 정보를 불러온다고 가정해 보겠습니다. 이 경우 특정 시점에 해당 웹사이트에 접근할 수 없으면 외부 데이터에 의존하고 있는 응용 프로그램의 일부가 제대로 동작하지 않을 수 있습니다. 오류 처리에서 가장 중요한 부분은 이러한 알려지지 않은 경우에 대비하여 이를 효과적으로 처리할 수 있도록 하는 것입니다. 사용자가 응용 프로그램을 계속 사용할 수 있거나 적어도 왜 작동하지 않는지에 대한 친절한 오류 메시지가 표시되어야 합니다.

런타임 오류는 ActionScript에서 다음과 같은 두 가지 방법으로 나타납니다.

  • Error 클래스: 상당수의 오류는 해당 오류와 연관된 Error 클래스가 있습니다. 오류가 발생하면 Flash 런타임(Flash Player 또는 Adobe AIR)에서 해당 오류와 연관된 특정 Error 클래스의 인스턴스를 만듭니다. 그러면 코드에서 오류 객체에 포함된 정보를 확인한 후 해당 오류에 대해 적절히 응답합니다.

  • 오류 이벤트: Flash 런타임에서 정상적으로 이벤트를 트리거하는 경우에도 오류가 발생할 때가 있습니다. 이러한 경우 오류 이벤트가 대신 트리거됩니다. 각 오류 이벤트에는 연관된 클래스가 있으며, Flash 런타임은 해당 클래스의 인스턴스를 오류 이벤트를 구독하는 메서드로 전달합니다.

특정 메서드에서 오류 또는 오류 이벤트를 트리거할 수 있는지 알아보려면 Adobe Flash 플랫폼용 ActionScript 3.0 참조 설명서에서 메서드 항목을 확인하십시오.

중요한 개념 및 용어

다음 참조 목록에는 오류 처리 루틴을 프로그래밍하는 데 중요한 용어가 나열되어 있습니다.

비동기
즉각적인 결과를 제공하지 않는 프로그램 명령(예: 메서드 호출)으로, 대신 결과 또는 오류가 이벤트 형태로 제공됩니다.

catch
예외(런타임 오류) 발생 시 코드에서 해당 예외를 인식하면 코드가 예외를 catch했다고 합니다. 예외가 catch되면 Flash 런타임에서 다른 ActionScript 코드에 예외를 알리는 작업이 중단됩니다.

디버거 버전
사용자에게 런타임 오류를 알리는 코드가 포함된 특수 버전의 Flash 런타임(Flash Player 디버거 버전 또는 ADL(AIR Debug Launcher))입니다. 가장 많이 사용되는 Flash Player 또는 Adobe AIR 표준 버전에서 ActionScript 코드에 의해 처리되지 않은 오류는 무시됩니다. 디버거 버전(Adobe Flash CS4 Professional 및 Adobe Flash Builder와 함께 제공됨)에서는 처리되지 않은 오류가 발생할 경우 경고 메시지가 나타납니다.

예외
응용 프로그램이 실행되는 동안 발생하여 Flash 런타임에서 자체적으로 해결할 수 없는 오류를 나타냅니다.

Re-throw
코드에서 예외를 catch하면 Flash 런타임에서는 예외를 더 이상 다른 객체에 알리지 않습니다. 예외를 다른 객체에서 수신하는 것이 중요할 경우 코드에서 해당 예외를 re-throw하여 알림 프로세스를 다시 시작해야 합니다.

동기
즉각적인 결과가 제공되거나 오류를 즉시 throw하는 프로그램 명령(예: 메서드 호출)으로, 동일한 코드 블록 내에서 해당 응답을 사용할 수 있습니다.

throw
Flash 런타임을 비롯하여 결과적으로 다른 객체 및 ActionScript 코드에 오류가 발생했음을 알리는 동작을 오류를 throw한다고 합니다.