|
ActionScript에서는 미리 정의된 여러 가지 Error 클래스가 제공됩니다. 하지만 자체적으로 작성한 코드에서 동일한 Error 클래스를 사용할 수도 있습니다. ActionScript 3.0에는 두 가지 주요 Error 클래스 즉, ActionScript 핵심 Error 클래스 및 flash.error 패키지 Error 클래스가 있습니다. flash.error 패키지에는 ActionScript 3.0 응용 프로그램 개발 및 디버깅을 지원하기 위한 추가 클래스가 포함됩니다.
핵심 Error 클래스
핵심 Error 클래스에는 Error, ArgumentError, EvalError, RangeError, ReferenceError, SecurityError, SyntaxError, TypeError, URIError 및 VerifyError 클래스가 포함됩니다. 이 클래스는 각각 최상위 네임스페이스에 있습니다.
|
클래스 이름
|
설명
|
참고 사항
|
|
Error
|
Error 클래스는 예외 발생을 위한 것이며 ECMAScript(EvalError, RangeError, ReferenceError, SyntaxError, TypeError 및 URIError)에서 정의된 다른 예외 클래스에 대한 기본 클래스입니다.
|
Error 클래스는 모든 런타임 오류에 대해 기본 클래스 역할을 수행하며 모든 사용자 정의 오류 클래스에 대해 권장된 기본 클래스입니다.
|
|
ArgumentError
|
ArgumentError 클래스는 함수 호출 시 제공된 매개 변수 값이 해당 함수에 대해 정의된 매개 변수와 일치하지 않을 때 발생하는 오류를 나타냅니다.
|
인수 오류는 다음과 같은 상황에서 발생할 수 있습니다.
|
|
EvalError
|
EvalError 예외는 매개 변수가 Function 클래스의 생성자에 전달되거나 사용자 코드에서
eval()
함수를 호출할 경우 발생합니다.
|
ActionScript 3.0에서는
eval()
함수에 대한 지원이 없어져 이 함수를 사용하려고 하면 오류가 발생합니다.
이전 버전의 Flash Player에서는
eval()
함수를 사용하여 변수, 속성, 객체 또는 동영상 클립을 이름으로 액세스할 수 있었습니다.
|
|
RangeError
|
RangeError 예외는 숫자 값이 허용되는 범위를 벗어난 경우 발생합니다.
|
예를 들어 지연 시간이 음수이거나 유한수가 아닌 경우 Timer 클래스에서 RangeError가 발생합니다. 잘못된 심도에 표시 객체를 추가하려는 경우에도 RangeError가 발생할 수 있습니다.
|
|
ReferenceError
|
ReferenceError 예외는 봉인된 비동적 객체에서 정의되지 않은 속성을 참조하려고 하는 경우 발생합니다. ActionScript 3.0 이전의 ActionScript 컴파일러 버전에서는
undefined
속성에 액세스하려고 할 때 오류가 발생하지 않았습니다. 그러나 ActionScript 3.0에서는 이 경우 ReferenceError 예외가 발생합니다.
|
정의되지 않은 변수에 대한 예외는 잠재적인 버그를 식별할 수 있도록 해 주며 소프트웨어 품질을 향상시키는 데 도움이 됩니다. 하지만 변수를 초기화하는 데 익숙하지 않은 경우 이 새로운 ActionScript 비헤이비어로 인해 코딩 습관을 바꿔야 합니다.
|
|
SecurityError
|
SecurityError 예외는 보안 위반이 발생하여 액세스가 거부될 경우 발생합니다.
|
보안 오류는 다음과 같은 상황에서 발생할 수 있습니다.
-
보안 샌드박스 경계를 벗어나 무단으로 속성에 액세스하거나 메서드를 호출하는 경우
-
보안 샌드박스에서 허용되지 않는 URL에 액세스하는 경우
-
필수 소켓 정책 파일이 없는 포트에 소켓 연결을 시도하는 경우
-
사용자의 카메라 또는 마이크에 액세스하려는 시도가 있었으며, 사용자가 장치에 대한 액세스를 거부한 경우
|
|
SyntaxError
|
SyntaxError 예외는 ActionScript 코드에서 파싱 오류가 발생할 경우 발생합니다.
|
SyntaxError는 다음과 같은 상황에서 발생할 수 있습니다.
|
|
TypeError
|
피연산자의 실제 유형이 예상 유형과 다르면 TypeError 예외가 발생합니다.
|
TypeError는 다음과 같은 상황에서 발생할 수 있습니다.
-
함수 또는 메서드의 실제 매개 변수를 형식 매개 변수 유형으로 강제 변환할 수 없는 경우
-
변수에 할당된 값을 해당 변수의 유형으로 강제 변환할 수 없는 경우
-
is
또는
instanceof
연산자에서 오른쪽 객체의 유형이 잘못된 경우
-
super
키워드를 잘못 사용한 경우
-
속성을 조회한 결과 여러 바인딩이 발견되어 결과가 모호한 경우
-
호환되지 않는 객체에 메서드를 호출한 경우. 예를 들어 RegExp 클래스의 메서드를 일반 객체로 "이식"하여 호출하면 TypeError 예외가 발생합니다.
|
|
URIError
|
URIError 예외는 전역 URI 처리 함수 중 하나를 해당 정의와 호환되지 않는 방식으로 사용할 경우 발생합니다.
|
URIError는 다음과 같은 상황에서 발생할 수 있습니다.
Socket.connect()
와 같은 유효한 URI를 예상하는 Flash Player API 함수에 유효하지 않은 URI가 지정되는 경우
|
|
VerifyError
|
VerifyError 예외는 형식이 잘못되었거나 손상된 SWF 파일이 발견되는 경우 발생합니다.
|
SWF 파일이 다른 SWF 파일을 로드할 때 부모 SWF 파일은 로드된 SWF 파일에서 발생한 VerifyError를 catch할 수 있습니다.
|
flash.error 패키지 Error 클래스
flash.error 패키지에는 Flash 런타임 API의 일부인 Error 클래스가 포함됩니다. 설명한 Error 클래스와 달리 flash.error 패키지는 Flash 런타임(Flash Player, Adobe AIR 등)과 관련된 오류 이벤트를 전달합니다.
|
클래스 이름
|
설명
|
참고 사항
|
|
EOFError
|
EOFError 예외는 사용 가능한 데이터의 끝 부분을 지나 계속 읽으려고 하면 발생합니다.
|
예를 들어 IDataInput 인터페이스에서 읽기 메서드 중 하나가 호출되고 이 읽기 요청을 수행하기 위한 데이터가 부족한 경우 EOFError가 발생합니다.
|
|
IllegalOperationError
|
IllegalOperationError 예외는 메서드를 구현하지 않았거나 현재의 사용이 구현 범위에서 벗어나는 경우 발생합니다.
|
잘못된 작업 오류 예외는 다음과 같은 상황에서 발생할 수 있습니다.
-
DisplayObjectContainer와 같은 기본 클래스에서 스테이지에서 지원할 수 있는 것보다 많은 기능을 제공하는 경우. 예를 들어 스테이지에서 마스크를 가져오거나 설정하려고 할 경우(
stage.mask
사용) Flash 런타임에서 "Stage 클래스는 이 속성이나 메서드를 구현하지 않습니다."라는 메시지와 함께 IllegalOperationError를 throw합니다.
-
하위 클래스에서 필요하지 않으며 지원하기를 원치 않는 메서드를 상속하는 경우
-
액세스 가능성 기능 지원 없이 Flash Player가 컴파일되었을 때 특정 액세스 가능성 메서드가 호출되는 경우
-
Flash Player의 런타임 버전에서 제작 전용 기능이 호출된 경우
-
타임라인에 있는 객체의 이름을 설정하려고 한 경우
|
|
IOError
|
IOError 예외는 일부 I/O 예외 유형이 발생할 경우 발생합니다.
|
예를 들어 연결되지 않았거나 연결이 해제된 소켓에서 읽기/쓰기 작업을 시도한 경우 IOError 예외가 발생합니다.
|
|
MemoryError
|
MemoryError 예외는 메모리 할당 요청이 실패하면 발생합니다.
|
기본적으로 ActionScript Virtual Machine 2는 ActionScript 프로그램에서 할당할 수 있는 메모리 크기에 제한을 두지 않습니다. 데스크톱 시스템에서는 메모리 할당에 실패하는 경우가 드물지만, 시스템에서 작업에 필요한 메모리를 할당할 수 없을 경우 이 오류가 발생합니다. 그러므로 데스크톱 시스템에서 이 예외는 극도로 큰 메모리 할당을 요청하는 경우가 아니면 발생하지 않습니다. 예를 들어 32비트 Microsoft® Windows® 프로그램의 경우 액세스할 수 있는 주소 공간이 2GB로 제한되므로 30억 바이트 요청은 불가능합니다.
|
|
ScriptTimeoutError
|
ScriptTimeoutError 예외는 15초 스크립트 타임아웃 간격에 도달할 경우 발생합니다. ScriptTimeoutError 예외를 catch하면 스크립트 타임아웃을 보다 적절하게 처리할 수 있습니다. 예외 핸들러가 없는 경우 catch되지 않는 예외 핸들러에서 오류 메시지와 함께 대화 상자를 표시합니다.
|
악의적 개발자가 예외를 catch하여 무한 루프를 유지하는 것을 방지하기 위해, 특정 스크립트 동안 발생한 첫 번째 ScriptTimeoutError 예외만 catch할 수 있습니다. 이후의 ScriptTimeoutError 예외는 코드에서 catch할 수 없으며 catch되지 않는 예외 핸들러로 바로 전달됩니다.
|
|
StackOverflowError
|
StackOverflowError 예외는 스크립트에 사용할 수 있는 스택이 소진된 경우 발생합니다.
|
StackOverflowError 예외는 무한 재귀가 발생했음을 나타낼 수 있습니다.
|
|
|
|