Front-End/JavaScript

[JavaScript] try...catch, finally (throw)

시니철 2024. 9. 13. 11:50

에러와 에러 객체

자바스크립트에서는 코드 실행 중 발생할 수 있는 다양한 에러를 처리하기 위해 에러 객체를 사용합니다. 

  • ReferenceError : 존재하지 않는 변수나 함수를 호출할 때 발생하는 에러
  • TypeError : 잘못된 방식으로 자료형을 다루면 발생하는 에러
  • SyntaxError : 문법에 맞지 않는 코드를 작성하면 발생하는 에러

 

의도적으로 에러 객체 생성

코드 실행 중 에러를 강제로 발생시킬 때는 throw를 사용하여 에러 객체를 던지고, 생성한 에러 객체를 발생시켜 이후 코드 실행을 중단합니다.

// 에러 객체 생성
const error = new ReferenceError('에러가 발생');
const error = new TyprError('에러가 발생');
const error = new SyntaxError('에러가 발생');

// 에러 객체를 발생시켜 코드 실행을 중단하고 예외를 던집니다.
throw error;

 

이러한 방식으로 에러를 발생시켜, 코드의 오류를 처리하고 디버깅할 수 있습니다.


try...catch문

try...catch문은 자바스크립트에서 대표적인 에러 처리 방법입니다.

try {
  // 실행할 코드
} catch (err) {
  // 에러가 발생했을 때 실행할 코드
}

 

try문 안에 실행할 코드를 작성하고, try문에서 에러가 발생한 경우에는 catch문 안에서 에러를 처리합니다.

try문에서 에러가 발생하지 않는다면 catch문의 코드는 동작하지 않습니다.


finally문

try {
  // 실행할 코드
} catch (err) {
  // 에러가 발생했을 때 실행할 코드
} finally {
  // 항상 실행할 코드
}

 

finally문은 try문에서 에러가 발생하지 않는 경우에는 try문 코드가 실행된 후, 에러가 발생한 경우에는 catch문 코드가 실행된 후에 실행됩니다. finally문은 에러 발생 여부와 관계없이 실행됩니다.


try...catch문 중첩

finally문에서 에러가 발생한 경우에는 다시 catch문으로 넘어가지 않습니다. 그러므로 만약에 finally문에서도 에러 처리가 필요한 경우에는 아래 처럼 try..catch문을 중첩해서 활용하는 방법이 있습니다.

try {
  try {
    // 실행할 코드
  } catch (err) {
    // 에러가 발생했을 때 실행할 코드
  } finally {
    // 항상 실행할 코드
  }
} catch (err) {
  // finally문에서 에러가 발생했을 때 실행할 코드
}