본문 바로가기

카테고리 없음

자바스크립트 예외처리

자바스크립트 예외처리

여타 프로그래밍 언어들이 지원하는 것처럼 자바스크립트에서도 예외처리만을 위한 구문들이 준비되어 있다. 한번 알아보자

예외

Exception. 런타임 중에 발생하는 요류를 뜻한다.
구문 오류(Syntax Error) 와는 달리 컴파일 단계에서는 발견되지 않는다.

조건문 예외처리

if(array == undefined){
    console.log('빈배열입니다')
}
else{
    console.log(array)
}

평범한 if else 문으로도 예외처리를 해줄 수 있다. 하지만 예외의 종류가 복잡해지면 곤란해질 수 있고, 또 코드를 읽는 입장에서는 if else 문이 예외처리 문인지 아니면 일반적인 조건문인지 구분하기 힘들 것이다.

try catch

try{
    // 예외가 생갈 수 있는 코드
} catch(exception) {
    // 예외가 발생했을 때 실행할 코드
}

try 블록 안에서 예외가 발생하면 catch 블록에서 예외를 처리한다.
예제 코드는 다음과 같다.

finally

finally는 예외의 발생 여부와 관계없이 수행되어야할 부분이 있을 때 사용한다. 필수는 아니므로 선택적으로 사용한다.

try{
    // 예외가 생갈 수 있는 코드
} catch(exception) {
    // 예외가 발생했을 때 실행할 코드
} finally {
    // 예외 발생 여부와 관계 없이 실행될 코드
}

예외 객체 (Exception Object)

예외가 발생했을 때 예외의 정보를 확인할 수 있게 해준다. catch 괄호 안에 입력하는 변수가 예외 객체이다. 일반적으로 예외 객체의 이름은 e 나 exception을 사용한다.
예외 객체에서 많이 사용하는 속성은 name, message 등이 있다.

throw

예외는 런타임에서 자동적으로 발생할 수도 있지만 프로그래머가 강제적으로 발생시킬 수도 있다. 이때 사용하는 키워드가 throw 이다.

function divideNumbers(a, b) {
  try {
    // 코드 블록: 예외가 발생할 수 있는 부분
    if (b === 0) {
      throw new Error('Division by zero is not allowed.');
    }
    return a / b;
  } catch (error) {
    // 예외가 발생했을 때의 처리
    console.error('Error:', error.message);
    return 'Error occurred';
  } finally {
    // 예외 발생 여부와 상관없이 항상 실행되는 블록
    console.log('Function execution completed.');
  }
}

// 테스트
console.log(divideNumbers(10, 2));  // 정상 실행: 5
console.log(divideNumbers(10, 0));  // 예외 발생: Error occurred