ActionScript 3.0에서 오류 처리

Flash Player 9 이상, Adobe AIR 1.0 이상

많은 응용 프로그램이 오류 처리를 위한 논리 작성 없이도 실행될 수 있으므로 개발자들은 응용 프로그램에 대한 오류 처리 관련 작업을 뒤로 미루는 경향이 있습니다. 하지만 오류 처리가 없으면 예상대로 작업이 수행되지 않을 경우 응용 프로그램이 쉽게 멈추거나 사용자 작업을 방해할 수 있습니다. ActionScript 2.0에는 사용자가 논리를 사용자 정의 함수에 작성하여 특정 메시지와 함께 예외를 발생시킬 수 있는 Error 클래스가 있습니다. 오류 처리는 사용자에게 친숙한 응용 프로그램을 만들기 위해 매우 중요하므로 ActionScript 3.0에는 오류를 catch하기 위한 확장된 아키텍처가 포함되어 있습니다.

참고: Adobe Flash Platform용 ActionScript 3.0 참조 설명서 에는 여러 메서드에서 throw되는 예외가 설명되지만 각 메서드에 대해 가능한 모든 예외가 포함되지 않을 수 있습니다. 메서드 설명 부분에 메서드에서 발생하는 일부 예외가 나열되어 있는 경우에도 이 설명에서 명확하게 언급하지 않은 다른 문제나 구문 오류에 의해 메서드에서 예외가 발생할 수 있습니다.

ActionScript 3.0 오류 처리 요소

ActionScript 3.0에는 다음을 비롯하여 오류 처리를 위한 여러 도구가 포함되어 있습니다.

  • Error 클래스: ActionScript 3.0에는 광범위한 Error 클래스가 포함되어 오류 객체를 생성할 수 있는 상황 범위를 확장합니다. 각 Error 클래스는 시스템 오류(예: MemoryError의 경우), 코딩 오류(예: ArgumentError의 경우), 네트워킹 및 통신 오류(예: URIError의 경우) 등의 특정 오류 또는 기타 상황을 응용 프로그램에서 처리하고 응답할 수 있도록 도와 줍니다. 각 클래스에 대한 자세한 내용은 Error 클래스 비교 를 참조하십시오.

  • 자동 실패 감소: 이전 Flash Player 버전에서는 명시적으로 throw 문을 사용한 경우에만 오류가 생성되고 보고되었습니다. Flash Player 9 이상의 경우 Flash 런타임, 기본 ActionScript 메서드 및 속성은 런타임 오류를 throw합니다. 이러한 오류에서 사용자는 오류가 발생할 때 예외를 보다 효과적으로 처리하고 각 예외에 대해 개별적인 방식으로 반응할 수 있습니다.

  • 디버깅 시 명확한 오류 메시지 표시: Flash 런타임의 디버거 버전을 사용하는 경우 문제가 될 수 있는 코드나 상황에서 확실한 오류 메시지가 발생되며 이를 통해 특정 코드 블록이 실패하는 이유를 쉽게 파악할 수 있습니다. 이러한 메시지는 오류 수정을 보다 효율적으로 수행할 수 있게 해줍니다. 자세한 내용은 Flash 런타임의 디버거 버전 작업 을 참조하십시오.

  • 정확한 오류를 통해 사용자에게 명확한 오류 메시지 표시: 이전 버전의 Flash Player에서는 upload() 호출이 실패할 경우 FileReference.upload() 메서드에서 5가지 가능한 오류 중 하나를 나타내는 false 부울 값을 반환했습니다. ActionScript 3.0에서 upload() 메서드 호출 시 오류가 발생하면 4가지 특정 오류를 통해 최종 사용자에게 보다 정확한 오류 메시지를 표시할 수 있습니다.

  • 개선된 오류 처리: 많은 공통적인 상황에서 서로 다른 오류가 발생합니다. 예를 들어 ActionScript 2.0에서는 FileReference 객체가 채워지기 전에는 name 속성이 null 값을 가지고 있습니다. 따라서 name 속성을 사용하거나 표시하기 전에, 값이 설정되었고 null 이 아닌지 확인합니다. ActionScript 3.0에서는 FileReference 객체가 채워지기 전에 name 속성에 액세스하려고 할 경우 Flash Player 또는 AIR에서 IllegalOperationError를 발생시켜, 값이 설정되지 않았으며 try..catch..finally 블록을 사용하여 오류를 처리할 수 있음을 알려 줍니다. 자세한 내용은 try..catch..finally 문 을 참조하십시오.

  • 성능상의 중대한 단점 없음: try..catch..finally 블록을 사용하면 이전 버전의 ActionScript에 비해 리소스를 거의 추가로 사용하지 않고도 오류를 처리할 수 있습니다.

  • ErrorEvent 클래스를 통해 특정 비동기 오류 이벤트에 대한 리스너 작성 가능: 자세한 내용은 오류 이벤트 및 상태에 응답 을 참조하십시오.

오류 처리 전략

응용 프로그램에 문제 상황이 발생하지 않는 한 오류 처리 논리를 코드에 작성하지 않아도 응용 프로그램을 성공적으로 실행할 수 있습니다. 하지만 오류를 적극적으로 처리하지 않고 응용 프로그램에 문제가 발생한 경우 사용자는 문제 발생 시 원인을 알 수 없습니다.

여러 가지 방법을 사용하여 응용 프로그램에서 오류를 처리할 수 있으며, 다음 목록에는 오류를 처리하는 세 가지 주요 옵션이 요약되어 있습니다.

  • try..catch..finally 문 사용: 이러한 명령문은 동기 오류 발생 시 오류를 catch합니다. 계층으로 명령문을 중첩하여 다양한 코드 실행 수준에서 예외를 catch할 수 있습니다. 자세한 내용은 try..catch..finally 문 을 참조하십시오.

  • 고유한 사용자 정의 오류 객체 만들기: Error 클래스를 사용하여 고유의 사용자 정의 오류 객체를 만들어 내장된 오류 유형에 포함되지 않는 응용 프로그램의 특정 작업을 추적할 수 있습니다. 그런 다음 사용자 정의 오류 객체에 try..catch..finally 문을 사용할 수 있습니다. 자세한 내용은 사용자 정의 오류 클래스 만들기 를 참조하십시오.

  • 오류 이벤트에 응답할 이벤트 리스너 및 핸들러 작성: 이 전략을 사용하면 try..catch..finally 블록에서 많은 코드를 중복하지 않고도 유사한 이벤트를 처리할 수 있는 전역 오류 핸들러를 만들 수 있습니다. 이 전략을 사용하여 비동기 오류를 catch할 수도 있습니다. 자세한 내용은 오류 이벤트 및 상태에 응답 을 참조하십시오.