JavaScript/JavaScript 문법

[JavaScript]예외 처리(Exception Handling)

DevStory 2022. 2. 3.

예외 처리란?

예외 처리는 프로그램에서 발생할 수 있는 오류를 대응하는 방법을 의미합니다. 프로그램에서 발생하는 오류는 프로그래밍 언어에 따라 다를 수 있으며, JavaScript는 다음과 같은 이유로 오류가 발생할 수 있습니다.

  • 구문 오류(SyntaxError): 세미콜론 또는 대괄호 누락으로 발생하는 오류입니다.
  • 범위 오류(RangeError): 값이 표현할 수 있는 범위를 벗어나는 경우 발생하는 오류입니다.
  • 참조 오류(ReferenceError): 존재하지 않는 변수에 값을 할당하는 경우 발생하는 오류입니다.
  • 타입 오류(TypeError): 값이 예상한 결과와 다른 경우 발생하는 오류입니다.
  • URIError: endcodeURI() 또는 decodeURI() 함수에 의해 발생하는 오류입니다.

그 외에도 숫자를 0으로 나누거나 네트워크 통신 중 네트워크 문제가 발생하거나 파일 업로드하는데 파일이 제거된 경우 등... 다양한 이유가 존재합니다.

 

이러한 오류가 발생하면 프로그램은 비정상적으로 동작하거나 실행되고 있던 코드가 중단되고 프로그램이 뻗을 수 있습니다.


JavaScript에서 예외를 처리하는 방법

위에서 예외란 무엇인지 설명했으며, 이제 예외를 처리하는 방법을 설명합니다. JavaScript는 try...catch...finally 또는 throw 명령문으로 예외를 처리합니다.

 

명령문 설명

  • try: 예외가 발생할 수 있는 코드를 작성합니다.
  • catch: try 문에서 예외가 발생한 경우 catch 문을 실행합니다. 예외를 대응하는 코드를 작성합니다.
  • finally: 예외 상관없이 항상 실행되어야 하는 코드를 작성합니다.
  • thorw: 개발자가 오류 또는 예외를 강제로 던져(throw)야 하는 경우 작성하는 명령문입니다.

 

다음은 try...catch 예제입니다. 아래 예제는 try 문에서 구문 오류가 발생하여 catch 문을 실행합니다.

function TestFunction() {
  try {
    console.llog('Test!');
  } catch(error) {
    console.error('catch start');
    console.error("error: " + error.message);
  }
}

TestFunction();

try 문에서 console.log()console.llog()로 잘못 입력했습니다. 위 코드는 의도적으로 작성된 코드이며, 구문 오류가 발생하여 catch 문이 실행되었습니다.

 

반응형

오류 객체의 속성

catch문의 매개변수에는 두 가지 속성이 존재하는데, 바로 name과 message 속성입니다.

  • name: 어떠한 오류인지 이름을 제공합니다.
  • message: 오류 메시지를 문자열로 반환합니다.
function TestFunction() {
  try {
    console.llog('Test!');
  } catch(error) {
    console.error("error name: " + error.name);
    console.error("error message: " + error.message);
  }
}

TestFunction();

 

다음은 try...catch...finally 예제입니다.

function TestFunction() {
  try {
    console.llog('Test!');
  } catch(error) {
    console.error('start catch');
    console.error("error: " + error.message);
  } finally {
    console.log('finally start');
  }
}

TestFunction();

finally 문은 try...catch 이후 실행되며, 예외가 있든 없든 항상 실행됩니다.

 

다음은 throw 명령문 예제입니다.

function TestFunction() {
  try {
    throw('call throw');
    // 에러 메시지 정의하는 경우
    // throw new Error('call throw');
  } catch(error) {
    console.error('start catch');
    console.error("error: " + error.message);
  } finally {
    console.log('finally start');
  }
}

TestFunction();

throw 문은 오류 또는 예외를 강제로 발생시킵니다. throw new Error(에러 내용)와 같이 작성하면, 에러 객체의 메시지를 개발자가 지정할 수 있습니다.

 

반응형

댓글