일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 도서
- 3D
- XAML
- framework
- Papervision
- 어도비
- 실버라이트
- 책
- ActionScript
- starling
- 플래시
- stage3d
- 아폴로
- adobe
- Air
- 워렌 버핏
- 주식
- Papervision3D
- 액션스크립트
- Genome2D
- Flash
- 플렉스
- Flex
- Silverlight
- 물리엔진
- API
- 마이크로소프트
- 아폴로케이션
- Microsoft
- 3.0
- Today
- Total
WonHada.com으로 이전
에러(Error) 처리 1 본문
AS 3.0에서는 ECMAScript (ECMA-262) Edition 4 에 준하는 새로운 Error 클래스를 제공하고 있는데요..각종 에러 처리와 사용자가 새롭게 정의한 에러 클래스(Custom Error Class)를 사용할 수 있습니다..
일단 에러를 발생시켜 보죠..
=============================================
var str:String;
trace(str.length);
=============================================
실행하면..
위와 같이 간단한 구문만으로도 오류창을 볼 수 있는데요..str 변수가 null이기 때문에 length를 구할 수가 없게 됩니다..에러죠..
다른 경우를 한번 살펴보겠습니다..아래는 외부의 txt 파일을 로드해서 변수와 값을 구하는 구문입니다..
============================================
로드할 파일명 : loadTest.txt
내용 : &testStr=에러테스트
=============================================
import flash.net.*;
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, on_Load);
loader.load(new URLRequest("loadTest.txt"));
function on_Load(event:Event):void {
var loader:URLLoader = URLLoader(event.currentTarget);
var variables:URLVariables = new URLVariables(loader.data);
var str:String = variables.testStr;
trace(str.length);
}
=============================================
실행하면..
에러가 납니다..AS 1.0 / 2.0 때와는 다르게 처음 변수앞에 "&"를 붙이면 에러가 납니다..
가끔 외주받은 업체에서 이벤트 문구등을 수정하기 편하게 txt 파일로 만들어 달라고 할때가 있는데요..그때 위와 같은 실수로 인해 오류가 날 수 있겠죠?
그럼 위와 같은 경우를 방지하려면 어떻게 해야할까요?
다른 방법도 있지만..학습을 위해 에러잡는 멋진남자 try를 써보도록 하죠..
try..catch..finally 스테이트먼트를 사용하면 에러를 멋지게 잡아내고 오류창을 뜨지 않게 할 수 있습니다..
그럼, 위 오류 코드를 잡아볼까요?
=============================================
//위쪽 구문은 똑같습니다..
function on_Load(event:Event):void {
var loader:URLLoader = URLLoader(event.currentTarget);
var variables:URLVariables;
try {
variables = new URLVariables(loader.data);
var str:String = variables.testStr;
} catch (e:Error) {
//에러가 발생할 경우 처리
var tmpStr:String = loader.data;
if (tmpStr.charAt(0) == "&") {
tmpStr = tmpStr.substr(1);
variables = new URLVariables(tmpStr);
var str:String = variables.testStr;
}
} finally {
trace(str.length);
}
}
=============================================
try로 일단 실행하고 에러가 있으면 catch로 잡아내고, 에러가 있든 없든 finally를 마지막에 실행합니다..
위 코드는 에러가 날 경우 문자열의 처음에 있는 "&"를 제거하는거죠..그럼 제대로 실행이 되겠죠?
AS 3.0 문서에 따르면..
'try..catch..finally 에 의한 에러 처리 리소스량은, ActionScript의 이전 버젼과 동등 또는 조금 증가하는 정도'
라고 합니다..그러니 에러가 의심되는 구문에는 꼭 try를 써주세요..유저가 오류창을 보구서 깜짝 놀라지 않게 말이죠^^
다음에는 '사용자가 새롭게 정의한 에러 클래스(Custom Error Class)'에 대해 알아보겠습니다..