hsunny study blog

예외처리 본문

programming/javascript

예외처리

헤써니 2021. 4. 8. 00:30

throw 문을  사용할 수 있고 try ...catch 문을 사용하는 예외들을 다룰 수 있다.

 

예외 유형

- Error

- AggregateError

- EvalError

- InternalError

- RangeError

- ReferenceError

- SyntaxError

- TypeError

- URIError

 

throw 문법

다양한 유형을 던질 수 있다. 

throw "Error2";   // String type
throw 42;         // Number type
throw true;       // Boolean type
throw {toString: function() { return "I'm an object!"; } };

※ 예외를 사용할 때 객체를 명시할 수 있으며, catch 문 안에서 객체의 특성을 참조할 수 있다.

try ...catch 문법

1개 이상의 try 블록과 0개 이상의 catch 블록으로 구성된다.

try 블록에서 예외가 발생하였을 때 catch 블록으로 이동하고, 그렇지 않은 경우 catch 블록을 건너 뛴다.

finally 문법은 try 블록과 catch 블록의 시행이 끝나고 다음에 진행된다.

 

catch 블록

throw 문장에 의해 명시된 값을 가지고 있는 식별자를 명시한다. catch 블록에 진입했을 때 식별자를 생성하며, 식별자는 catch 블록에 있는 동안만 유지된다. catch 블록의 시행이 끝난 후, 식별자는 더이상 사용할 수 없다.

 

finally 블록

try 블록과 catch 블록이 실행되고, try...catch 문 다음 코드가 실행되기 전에 실행되어야 하는 코드들을 담고 있다.

finally 블록 안의 문장들은 어떤 catch 블록도 예외를 처리하지 않더라도 실행된다.

아래와 같은 방식으로 더욱 우아한 실패처리가 가능하다.

openMyFile();
try {
  writeMyFile(theData); //This may throw a error
} catch(e) {
  handleError(e); // If we got a error we handle it
} finally {
  closeMyFile(); // always close the resource
}

만약 finally 블록이 값을 반환하였을 경우, try 블록과 catch 블록의 반환 값은 finally 블록에서 반환하는 값의 형태로 덮어 씌워진다.