ActionScript 3.0에서 오류 처리
Flash Player 9 이상, Adobe AIR 1.0 이상
많은 응용 프로그램이 오류 처리를 위한 논리 작성 없이도 실행될 수 있으므로 개발자들은 응용 프로그램에 대한 오류 처리 관련 작업을 뒤로 미루는 경향이 있습니다. 하지만 오류 처리가 없으면 예상대로 작업이 수행되지 않을 경우 응용 프로그램이 쉽게 멈추거나 사용자 작업을 방해할 수 있습니다. ActionScript 2.0에는 사용자가 논리를 사용자 정의 함수에 작성하여 특정 메시지와 함께 예외를 발생시킬 수 있는 Error 클래스가 있습니다. 오류 처리는 사용자에게 친숙한 응용 프로그램을 만들기 위해 매우 중요하므로 ActionScript 3.0에는 오류를 catch하기 위한 확장된 아키텍처가 포함되어 있습니다.
참고: Adobe Flash 플랫폼용 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할 수도 있습니다. 자세한 내용은 오류 이벤트 및 상태에 응답을 참조하십시오.