Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- CSS
- HTML
- 백준
- 프로그래머스코테
- 안드로이드 스튜디오
- 포이마웹
- HTML5
- 백준구현
- 백준nodejs
- 코딩테스트
- 알고리즘
- 리액트댓글기능
- 프로그래머스
- 백준골드
- css기초
- dp알고리즘
- 프로그래머스JS
- 몽고DB
- 다이나믹프로그래밍
- JS프로그래머스
- js코테
- 백준구현문제
- 자바스크립트
- JS
- 백준알고리즘
- 백준js
- 리액트커뮤니티
- 익스프레스
- 리액트
- 코테
Archives
- Today
- Total
개발새발 로그
FE - 에러 핸들링 본문
에러핸들링이란
예상하거나 예상치 못한 상황에서 에러가 발생했을 때 자바스크립트에서 지원하는 기본적인 기능들로 예외 처리를 하여 어플리케이션이 중단되는 것을 막고, 실행 흐름이 이어 갈 수 있도록 복구하는 것을 말합니다.
에러핸들링이 왜 중요한가?
1. 안정적인 서비스
- 에러 핸들링이 되어있지 않다면 어플리케이션의 규모가 커지고 코드양이 많아져 로직이 복잡해진다면 예외나 에러가 발생할 상황이 많아지고, 관리하기 힘들어진다.
2. 사용자 경험
- 에러 핸들링이 되어있지 않은 상태에서 서버와 통신하는 과정에 에러가 발생했을 때 어플리케이션이 중단되고, 사용자는 멈춰있는 화면을 보게 된다.
- 시간이 지날수록 사용자는 서비스를 이탈할 가능성이 높아진다.
에러의 종류
1. 컴파일 에러
- 자바스크립트 엔진이 코드를 읽으면서 구문에 에러가 없는 지 검사하고 구문에 에러가 있다면 에러를 방출한다.
2. 런타임 에러
- 코드가 실행되고 발생하는 에러
- 자바스크립트는 코드를 일고 실행시키기 때문에 처음에 읽는 과정에서 에러가 발생한다면 실행흐름을 복구시킬수 없다
- 즉, 핸들링이 불가능해진다.
자바스크립트 에러 객체 종류
- Error : 기본 적인 Error 객체
- SynTaxError: 문법이 틀렸을 때 발생
- ReferenceError: 잘못된 참조를 했을 때 발생
- RangeError: 숫자 변수가 범위를 벗어났을 때 발생
등등..
에러 발생 과정
실행 컨텍스트 과정에서 에러가 발생하는 코드를 실행시키려고 할 때
자바스크립트 엔진은
어떤 에러인지와 에러 메시지, 그리고 스택 등이 담겨있는 new Error 객체를 생성하여 Throw한다.
Throw되면 호출함수의 되감기 과정이 발생하여 전역 실행컨텍스트까지 도달하면 전역 에러를 발생시키고,
프로그램은 종료된다.
에러 핸들링 방법
try/catch
try/catch내에서 에러가 Throw되면
호출 함수의 되감기 과정이 발생되고
try/catch 함수의 try문이 있는 곳까지 도달하게 됩니다.
try문을 만나게 되면 catch에 에러를 전달하고,
에러가 콘솔에 찍히게 됩니다.
비동기 로직에서 try/catch 주의할 점
만약 비동기 호출에서 await와 같은 비동기 처리 패턴이 없다면
try/catch내에서 비동기 호출이 실행될 때 동안 try문이 종료하게 된다.
만약 비동기 호출에서 에러가 발생하면 전역에러가 발생하게 된다.
try/catch를 많이 사용하면 좋지 않을까?
try/catch문을 많이사용하게 되면
분기처리가 되지않기 때문에 어디서 에러가 발생하는지 파악하기 힘들고
빠르게 에러를 처리하고, 유지보수하기에 걸림돌이 될 수 있습니다.
728x90
반응형
LIST
'자바스크립트' 카테고리의 다른 글
선언형 프로그래밍 방식을 바닐라 자바스크립트로 배워보자 (0) | 2024.05.18 |
---|---|
D3.js 인터렉티브 적용하기 (1) | 2024.01.24 |
D3.js 데이터 로딩하는 함수 (0) | 2024.01.24 |
D3 척도와 축 - 선형 척도, 순서형 척도, 묶음 척도, 영역과 여백, x축과 y축(axis) (1) | 2024.01.24 |
D3.js 데이터 조인 (2) | 2024.01.24 |