ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 혼자 공부하는 자바스크립트 8장 - 예외 처리
    자바스크립트/혼자 공부하는 자바스크립트 2021. 8. 8. 23:53

    구문 오류와 예외

    자바스크립트 코드 작성 시 오류는 두 가지가 있다:

    1. 구문 오류syntax error: 코드가 실행조차 되지 않는 오류
    2. 예외expeption: 코드 실행 중간에 발생하는 오류

    예외를 처리하는 것을 예외 처리라고 한다.

     

    오류의 종류

    프로그래밍 언어의 오류에는 크게 2가지 종류가 있다: 1) 프로그램 실행 전에 발생하는 오류, 2) 프로그램 실행 중에 발생하는 오류. 1)을 구문 오류라고 부르고, 2)를 예외 혹은 런타임 오류라고 구분하여 부른다.

    구문 오류

    괄호의 짝을 맞추지 않거나, 문자열을 열었는데 닫지 않았거나 등의 상황에서 발생한다. 이때 웹 브라우저는 코드를 분석할 수 없으므로 실행되지 않는다. 자바스크립트는 구문 오류 발생시 Uncaught SyntaxError 문을 띄운다. 오류 메시지로 missing ) after argument list 등을 함께 띄우므로, 오류가 발생한 위치의 구문을 수정하면 오류를 해결할 수 있다.

    예외

    자바스크립트에서 TypeError, ReferenceError, RangeError 등이 예외로 분류된다. 해당 오류들은 오류가 발생한 문장에 앞서 작성된 코드들은 실행된다는 특징이 있다.

     

    기본 예외 처리

    조건문을 사용해 예외가 발생하지 않게 만드는 것

    const h1 = document.querySelector("h1");
    if (h1) {
      h1.textContent = "안녕하세요";
    } else {
      console.log("h1 태그가 없습니다.")
    }

    만일 h1 태그를 선택했는데 없다면, 자바스크립트는 TypeError를 띄울 것이다. 이를 방지하기 위해 조건문을 사용해 존재할 때에만 h1 태그의 내용을 바꾸도록 예외 처리를 할 수 있다.

    자바스크립트는 유연한 언어여서 예외가 발생할 가능성이 적은 편이다. 하지만 예외가 발생하지 않는다고 좋은 것은 아니다. 프로그램에 문제가 있는데 계속해서 실행된다면 문제가 쌓일 수 있다. 문제가 발생할 수 있는 부분은 조건문 등으로 처리하는 것이 필요하다.

     

    고급 예외 처리

    try catch finally 구문을 사용해서 예외를 처리하는 방법을 고급 예외 처리라고 부른다.

    try {
      // 예외가 발생할 가능성이 있는 코드
    } catch(exeption) {
      // 예외가 발생했을 때 실행할 코드
    } finally {
      // 무조건 실행할 코드: 필요한 경우에만 사용
    }

    try 구문 안에서 예외 발생 시 더 이상 try 구문을 진행하지 않고 catch 구문을 실행한다.

    finally 구문은 필수는 아니지만 반드시 실행할 코드가 필요할 때 작성한다. try catch 구문 내부에서 return, break, continue 등의 키워드를 사용하면 함수를 벗어나므로 try catch 구문 밖에 작성한 함수 내부의 코드가 실행되지 않는 것을 방지하기 위해 작성한다.

     

    예외 처리 고급

    예외와 발생된 정보를 확인할 수 있는 것으로 예외 객체가 있다. 자바스크립트는 유연한 언어여서 개발자가 예외를 강제로 발생시켜줘야 하는 경우가 많다. 이럴 때 사용하는 것이 throw 키워드이다.

     

    예외 객체

    try catch 구문을 사용할 때 catch의 괄호 안에 입력하는 식별자가 예외 객체이다. 일반적으로 eexeption이라는 식별자를 사용한다.

    모든 웹 브라우저의 예외 객체는 namemessage 속성을 갖고 있으며, 그 외에 갖고 있는 속성은 브라우저에 따라 다르다.

     

    예외 강제 발생

    예외를 강제로 발생시킬 때는 throw 키워드를 사용한다.

    throw 문자열;        // Uncaught 문자열
    
    throw new Error(문자열);        // Uncaugth Error: 문자열 at 파일 이름:줄 번호

    나누기를 하는 함수를 작성했을 때, 0으로 나눗셈을 시도할 경우 throw를 통해 예외를 발생시킬 수 있다.

    댓글

Designed by Tistory.