버그

Yeongsan Son·2021년 4월 9일
0

버그란 무엇인가?

  • 프로그램에서 발생하는 오류
  • 버그를 제거하는 작업: 디버그
  • 프로그래밍에서는 디버깅 작업에 많은 시간을 할애한다.

버그의 원인

  • 논리적인 버그: 프로그램 알고리즘의 오류, 문법 오류
  • 오타
  • 실행 환경의 변화: OS, 프로그래밍 언어 자체의 사양
  • 'use strict'를 사용해 발생하기 쉬운 버그를 제거할 수 있지만 코드를 작성하는데 제약이 발생

console 디버깅

  1. console.log로 변수 값을 표시

  2. cosole.dir로 객체의 프로퍼티 목록을 표시

    예외 처리

    자바스크립트에서는 throw 문으로 예외를 던지고 try/catch/finally 문으로 예외를 잡아서 처리한다.


    throw문

  function permutation(a) {
    if(!(a instanceof Array) ) {
      throw new Error(a + " is not an array");
    }
  }
  permutation("ABC); // 문자열이 들어갔기 때문에 throw 문으로 던진 에러 메시지가 발생한다.

Error객체

생성자생성하는 인스턴스
Error범용적인 예외 객체
EvalErroreval 함수와 관련해서 발생한 예외 객체
RangeError숫자 값이 허용 범위를 벗어났을 때 발생하는 예외 객체
ReferenceError잘못된 참조를 만났을때 발생하는 예외 객체(자바스크립트를 다루면서 제일 많이 만나 봄)
SyntaxError자바스크립트 문법에 어긋나는 구문을 만났을 때 발생하는 예외 객체
TypeError변수 및 타입이 유효하지 않을 때 발생하는 예외 객체
URIErrorencodeURI와 decodeURI 메서드에 잘못된 인수가 전달되었을 때 발생하는 예외 객체

try/catch/finally

try {
  // 이곳에 실행할 코드를 작성 (예외가 발생할 수 있는 코드)
  // ex. 엄마 심부름으로 15,000원을 받아서 다이소에서 슬리퍼, 이디야에서 아메리카노, 슈퍼에서 계란 1판을 사와야 함.
} catch(exception) {
  // try에서 예외가 발생했을 때 실행
  // exception에는 던져진 예외 값이 들어옴. 이 값을 바탕을 예외 처리
  // ex. 계란 1판의 가격이 올라서 슬리퍼와 아메리카노를 사고 남은 돈으로 계란 1판을 살 수 없음
} finally {
  // try 블록 코드와 catch 블록 코드가 실행된 이후에 반드시 실행
  // ex. 슈퍼에서 계속 머물러 있는게 아니라 집으로 돌아감
}

응용: 반복문에서 빠져나오기

var a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

try {
  a.forEach(function(v, i, a) {
    if(i > 5) {
      throw false; // i가 5보다 크다면 예외처리
    }
    return a[i] = v * v; // 예외가 아니라면 이 코드가 실행
  });
} catch(e) {
  if(e) throw e;
}
console.log(a); // [0, 1, 4, 9, 16, 25, 6, 7, 8, 9];
profile
매몰되지 않는 개발자가 되자

0개의 댓글

관련 채용 정보