[JavaScript] 예외 처리(exception)

2022. 7. 6. 16:50·Language/JavaScript
728x90

예외(exception)

예외(exception)란 프로그램이 실행 중에 발생하는 런타임 오류를 의미한다.

이러한 예외가 발생하지 않도록 미리 방지하는 것도 중요하지만, 발생한 예외를 처리하는 방법 또한 매우 중요하다.

※ 오류(error)란 프로그램 구문의 문법적인 오류를 의미한다.

예외 발생

예외를 발생시킨다는 것은 명시적으로 오류를 발생시킨다는 의미뿐만 아니라 예외 상황을 알린다는 의미도 있다.

 

자바스크립트에서는 throw 키워드를 사용하여 예외를 발생시킬 수 있다.

문법
throw 표현식;

표현식에는 예외 코드를 나타내는 숫자나 오류 메세지를 담고 있는 문자열, Error 객체 등이 올 수 있다.


예외 처리(exception handling)

자바스크립트에서는 프로그램이 실행되는 도중 발생하는 예외를 처리하기 위해 try / catch / finally 문을 사용한다.

문법
try {
    예외를 처리하길 원하는 실행 코드;
} catch (ex) {
    예외가 발생할 경우에 실행될 코드;
} finally {
    try 블록이 종료되면 무조건 실행될 코드;
}
  1. try 블록 : 기본적으로 맨 먼저 실행되는 코드이며, 여기에서 발생한 예외는 catch 블록에서 처리될 수 있다.
  2. catch 블록 : try 블록에서 발생한 예외 코드나 Error 객체를 인수로 전달받아 그 처리를 담당한다.
  3. finally 블록 : 이 블록은 try 블록에서 예외가 발생하건 안 하건 맨 마지막에 무조건 실행된다.

catch 블록과 finally 블록은 선택적인 옵션으로 반드시 사용할 필요는 없다.

따라서 사용할 수 있는 모든 적합한 try 구문은 다음과 같다.

적합한 try 구문
1. try / catch
2. try / finally
3. try / catch / finally

Error 객체

자바스크립트에서는 런타임 오류가 발생할 때마다 Error 객체의 인스턴스가 만들어져 해당 오류의 정보를 저장한다.

var btn = document.getElementById("throwExBtn");      // 아이디가 "throwExBtn"인 요소를 선택함.
btn.addEventListener("click", throwEx);               // 선택한 요소에 click 이벤트 리스너를 등록함.
function throwEx() {
    try {
        throw new Error("직접 발생시킨 오류입니다!"); // Error 객체를 사용해 명시적으로 오류를 발생시킴.
    } catch (ex) { // 발생된 오류를 매개변수 ex로 접근할 수 있음.
        document.getElementById("text").innerHTML = ex.name + "<br>"; // name 프로퍼티는 오류의 타입을 저장함.
        document.getElementById("text").innerHTML += ex.message;   // message 프로퍼티는 오류 메시지를 저장함.
    }
}

'Language > JavaScript' 카테고리의 다른 글

[JavaScript] 정규 표현식의 개념  (0) 2022.07.06
[JavaScript] strict 모드  (0) 2022.07.06
[JavaScript] 이벤트 리스너 호출  (0) 2022.07.05
[JavaScript] 이벤트 리스너 등록  (0) 2022.07.05
[JavaScript] 이벤트의 개념  (0) 2022.07.05
'Language/JavaScript' 카테고리의 다른 글
  • [JavaScript] 정규 표현식의 개념
  • [JavaScript] strict 모드
  • [JavaScript] 이벤트 리스너 호출
  • [JavaScript] 이벤트 리스너 등록
arajo
arajo
  • arajo
    아라 메모장
    arajo
  • 전체
    오늘
    어제
    • 분류 전체보기 (509)
      • Language (298)
        • HTML (55)
        • CSS (11)
        • JavaScript (70)
        • TypeScript (8)
        • Python (33)
        • Java (119)
        • C (0)
        • C# (2)
      • Programming (92)
        • Programming (14)
        • Web (51)
        • Apache (1)
        • MySQL (23)
        • AWS (3)
      • Framework | Library (26)
        • Framework | Library (3)
        • Vue.js (2)
        • React.js (5)
        • React Native (4)
        • Node.js (1)
        • Ajax (1)
        • Bootstrap (8)
        • Spring (1)
        • Flutter (1)
      • etc (2)
      • 휴식 (19)
        • 책 (13)
        • 일기 (5)
        • 게임 일기 (1)
      • A (71)
        • 공부 (18)
        • 기타 (6)
        • 일 (47)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    MySQL
    TypeScript
    array
    변수
    리액트
    제어문
    Java
    파이썬
    자바스크립트
    CSS
    JavaScript
    object
    event
    객체
    타입스크립트
    web
    react
    next.js
    HTML
    Python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
arajo
[JavaScript] 예외 처리(exception)
상단으로

티스토리툴바