멋쟁이v의 개발일지

[Javascript] 예외처리 본문

0년차/Javascript

[Javascript] 예외처리

멋쟁이v 2023. 4. 29. 15:40
728x90
320x100
📕

[목차]


01. try ~ catch 예외처리

💡
실수, 예상치 못한 사용자 입력, 잘못된 서버 응답 등의 이유 발생시 스크립트가 실행이 중단을 방지하기 위한 처리

스크립트 에러가 발생해도 catch에서 에러 처리하기 때문에 스크립트가 실행이 중단되지 않는다.

02. 문법

  • 동작 순서
    👉🏻
    1️⃣ 먼저 try { } 안의 코드 실행

    2️⃣ 에러가 없다면, try 안의 마지막 줄까지 실행. catch 블록은 건너뜀

    3️⃣ 에러가 있다면, try 안의 코드의 실행이 중단되고, catch(err) 블록 안 코드 실행

  • error 프로퍼티 종류
    👉🏻
    name : 에러 이름, 정의되지 않은 변수 때문에 발생하는 에러인 경우 ReferenceError가 출력

    message : 에러 상세 내용을 담고 있는 메시지

    stack : 에러 전체 내용 ( name : message )

  • [코드예제] try catch
    try{
        name = '홍길동'; // 선언되기 전에 값을 대입
        let name;
        console.log(name);
    } catch (error) {
        console.log(error.name); // ReferenceError
        console.log(error.message); // name변수가 선언되지 않았다라는 에러내용
        console.log(error.stack); // 에러 전체 내용
        console.log('그다음 실행코드'); // 에러 출력 후 실행
    }

03. try ~ catch ~ finally

💡
finally 구문은 항상 실행된다.
  • 동작 순서
    👉🏻
    1️⃣ 먼저 try { } 안의 코드 실행

    2️⃣ 에러가 없다면, try 안의 마지막 줄까지 실행, catch 블록은 건너뜀, finally 블록 실행

    3️⃣ 에러가 있다면, try 안의 코드의 실행이 중단되고, catch(err) 블록 안 코드 실행, finally 블록 실행

  • [코드예제] try catch finally
    /**
     try {
        // 예외가 발생될 우려가 있는 코드 집합
     } catch(error) {
        // 예외처리 (사용자에게 예외 발생 메시지 알림 etc)
     } finally {
        // 예외가 발생되든 안되든 무조건 코드 실행
     }
     */
    // 양의 정수든 음의 정수든 정수의 절대값을 반환하는 함수
    function numAbs(num) {
      if(typeof num == 'number' && Number.isInteger(num)) {
        return Math.abs(num);
      }
      throw new Error('입력하신 값은 정수가 아닙니다.');
    }
    let result = 0;
    try{
      result = numAbs(-12.33);
      console.log(result);
    } catch (error) {
      console.log(error.stack);
    } finally {
      console.log('그다음 코드 실행');
    }


tag : #javascript #예외처리 #try #catch #finally #name #message #stack


Uploaded by N2T

728x90
320x100

'0년차 > Javascript' 카테고리의 다른 글

[Javascript] DOM(Document Object Model)  (0) 2023.05.14
[Javascript] 브라우저렌더링, 브라우저 객체(BOM)  (1) 2023.05.14
[Javascript] 내장객체  (0) 2023.04.29
[Javascript] 함수  (1) 2023.04.29
[Javascript] 객체  (0) 2023.04.29
Comments