javascript를 사용하다보면 exception을 handing하고 싶은경우가 있다.
에러가 나면 ie에서 노랗게 경고메세지를 알리는경우가 있는데 그렇게하면 알기가 힘들다.
물론 각종 툴을 사용하면 알수가 있으나 그렇게 하는것보다 exception을 handing하면
좀더 효율적으로 작업을 할수가 있을것 같았는데 전혀 방법도 몰라 할수없었다.
이번기회에 exception을 공부할기회가 있어서 정리 하도록한다. ㅡㅡ;

javascript 역시 다른 언어 같이 exception이 있다.
그리고 try,catch,finally,thorw 역시 존재한다.

그래서 간단히 exception의 사용법을 알아 보도록하자.
기본적은 구문은 다른 언어와 같이..

try{
.........
}catch(e){
.........(throw expression;)
}finally{
.........
}

이런식으로 사용된다.
물론 알겠지만 간단히 설명하면
try구문에서 exception이 일어나면 catch문으로 exeption을 처리할수도 있고
throw을 던져 처리할수도 있다.
마지막으로 finally을 실행한다.
(finally는 자원의리소스 반납등을 할때 사용된다.
이부분은 잘사용하게 되면 메모리 릭현상을 방지할수 있다.)
일반적은 언어와 크게 차이 없음.


그리고 exception에는 javascript 1.5기준으로 하여 아래 6가지가 있다.

EvalError - 잘못된 방법으로 eval()을 사용했을때.
RangeError - 허락되는 숫자범위를 넘쳤을때.
ReferenceError - 허용되지 않는 참조를 사용했을때.
SyntaxError - 자바스크립트 파싱중 syntax에러 났을때.
TypeError - 사용할수 없는 변수를 썼을때.
URIError - encodeURI() 나 decodeURI()을 잘못된 방법으로 썻을때.

이 exception들은 name,message라는 2가지 프로퍼티를 갖고 있는데.
당연히도 name은 exception의 이름,message는 exception의 message를 말한다.

그리고 instanceof을 사용하여 exception을 구별해 사용하기도 한다.


만약에 사용자정의 exception을 가지고 만들고 싶다면.

function UserException (message) {
  this.message=message;
  this.name="UserException";
}
myUserException=new UserException("Value too high");
throw myUserException;

이런식으로 자신의 exception을 만들어서 사용할수도 있다.
(물론 이름은 맘대로 정해도 상관없음.)


요즘 갈수록 javascript의 사용이 늘고 거대화지면서 서버코드를 할때와 같이
exeption과 logging전략이 필요한것 같다.


참고한곳:
Core JavaScript 1.5 Guide:Exception Handling Statements:try...catch Statement
JavaScript Exception Handling
Posted by 전용우
,