제대로 파는 자바스크립트(JavaScript)-by 얄코 내 멋대로 정리

백세희·2023년 5월 27일

Section 11. 문제들에 대비하기

1. 에러 핸들링

에러 핸들링 -> 에러 발생 대비가 없으면 프로그램 종료

I. 자바스크립트의 에러 핸들링

  • try ... catch
try {
	// 에러 발생 여지가 있는 코드
	// 여기서 에러가 나도 프로그램을 멈추지 않음
} catch(발생한 오류 객체) {
	// 에러 발생 시 실행할 코드
}

// + finally 블록
// 에러 여부 관계없이 실행하는 코드 같음 (내 생각)
// try이나 catch문에 return이 있더라도 반드시 실행!

II. Error 객체

1. 기본 생성과 사용법

const error = new Error('뭔가 잘못됐어'); // 에러 생성도 가능하다~~ 

console.error(error); 

기본 인스턴스 프로퍼티가
name, message 이런거구나..?
API 통신이라고 해야 하나?
아직 잘 모르지만 로그인 로그아웃 서버와 통신(?)할 때
오류를 잡아야 하는 경우가 있었다.
그럴 때 message 프로피터를 활용해서 코드를 짰었는데
에러 또한 객체라는 것을 알 수 있었다.
(맞나...?)

2. 에러의 여러 종류

사실 에러가 나면 ..
에러의 이름을 확인 하지 않았다.
'엥?!!! 무슨 에러지?!!!!!!!' 하면서
요즘에는 chat GPT에 무작정 검색하곤 했다.
그런데 스스로 어떤 에러인지 name 프로퍼티, message 프로퍼티 정도는 확인해야겠다고 생각했다.
이렇게 친절하다니! ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
하지만 코드가 길고 복잡하면 찾기 더 어렵겠지??

const x x;

try {
  (3).split('');
} catch (e) {
  console.error(e);
  console.log(e.name);
  console.log(e.message, '\n\n');
}


❤ 조건문을 활용한다면!

  • 오류 종류에 따라 대처 가능
  • 직접 오류를 생성하여 던짐 -> 논리적 오류 같은 것도 잡을 수 있나?
  • Error 객체를 상속받아서 커스텀 에러 만들 수 있음
  • 에러 버블링 패스~

2. 구시대의 유물var

var는 사용하지 말아라!
이유로는
선언 없이 사용 가능
재선언 가능
블록 레벨 스코프 무시 등등

3. 엄격 모드

'use strict'를 자바스크립트 문서 최상단에 작성하면 문서 전체에 적용됨

기존의 느슨한 모드에서 허용되던, 문제를 유발할 수 있는 코드들에 오류를 발생시킴

  • 클래스나 모듈 사용시 엄격 모드가 기본적으로 적용됨
  • 모든 문제를 방지하지 않음

4. 옵셔널 체이닝

?. - 옵셔널 체이닝 연산자
호출 대상이 undefinednull이어도 오류를 발생시키지 않음 - 대신 undefined 반환

언제 사용하나요?
유효하지 않을 수 있는 참조에 의한 문제들
네트워크 요청 등, 어떤 값이 들어올지 모르는 상황

근뎅..? error로 잡는게 더 확실할 것 같은데?
그러면 코드 실행이 멈추니깐 일단 undefined로 하는 건가?
네트워크 오류 빈도수가 많으니깐?
이유가 뭐야?!

출처
[제대로 파는 자바스크립트(JavaScript) - by 얄코], [강의링크]

profile
프론트엔드

0개의 댓글