일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- 포인터
- 배열
- alexnet
- 이진탐색
- APOLLO
- 웹팩
- 컨테이너
- 자료구조
- 큐
- pytorch
- 코딩테스트
- 스택
- Machine Learning
- GraphQL
- 브라우저
- 타입스크립트
- 프로그래머스
- 자바스크립트
- 알고리즘
- cors
- 연결리스트
- 릿코드
- RxJS
- 프로세스
- vue3
- RT scheduling
- C
- 프론트엔드
- 해시테이블
- 연결 리스트
- Today
- Total
프린세스 다이어리
프론트엔드 컴파일 에러(Compile Error) vs 런타임 에러(Runtime error) vs 논리 오류(Logical Error), 예시 본문
프론트엔드 컴파일 에러(Compile Error) vs 런타임 에러(Runtime error) vs 논리 오류(Logical Error), 예시
개발공주 2021. 9. 9. 12:46오류의 종류를 나누는 이유
오류를 최대한 빨리 고치기 위해서.
- 어디서 오류가 났는지 알면 빠르게 대처할 수 있음. 논리 오류가 난 소스에서 구문이 잘못되었는지 볼 필요는 없다.
1. 컴파일 에러(Compile Error)
문법오류(Syntax Error) 등이 해당됨. 파싱 에러(Parsing Error)라고도 불림. 컴파일하는 동안에 발생하기 때문에 다른 스레드에는 전혀 영향 주지 않음.
- 컴파일러/인터프리터가 소스 코드를 바이트 코드로 변환하면서 발견한 오류를 출력함
- 컴파일 시에 에러 메시지로 오류의 위치를 알려주기 때문에 찾기 쉬운 에러임
- 수정되지 않으면 프로그램은 컴파일되지 않음
- 해당 오류 코드가 포함된 동일 쓰레드 상에만 오류 처리가 되고, 다른 쓰레드의 코드는 오류가 없는 것처럼 처리되어 실행됨.
예시:
- 타입 구문에 해당하지 않는 속성 이름으로 오타를 내 타입에러가 발생함
2. 런타임 에러(Runtime Error)
컴파일 후 프로그램이 실행하는 동안에 발생함. 런타임 에러라는 게 프로그램 실행 시 일어나는 에러라는 뜻이기 때문에, 큰 범위의 에러를 포함함
- 프로그램에서 수행할 수 없는 작업을 시도할 때 발생함. 프로그램 발생 시 설계 미숙으로 인한 경우가 많다고 함.
- 대부분 try-catch문을 이용해 에러를 해결할 수 있음.
- 런타임 에러에는 논리 에러, 시스템 에러 등이 있음.
- 다른 스레드가 정상적으로 실행할 수 있도록 해당 스레드에만 영향을 미침.
예시:
- 웹뷰에서 iOS로 메시지를 전달하려고 할 때, 존재하지 않는 메서드 이름으로 호출함
- 응답값으로 구매 혜택 리스트를 받아서 보여줘야 하는데, 빈 배열이 내려오는 경우를 고려하지 못함
3. 논리 오류(Logical Errors)
프로그램 실행에 아무런 문제가 발생하지 않지만 논리적으로 잘못되어 예상한 결과가 안 나오는 오류.
- 비즈니스 로직 또는 요구 사항에 따라 개발되었지만, 예상했던 응답값이 내려오지 않았을 경우 발생할 수 있음
- 어디서 꼬였는지 눈에 드러나지 않아 디버그 모드로 단계별로 실행하면서 찾음.
- 물론 내가 구현한 로직이 잘못되어서 발생하는 에러
예시:
- 주문페이지에서 신용카드결제를 선택했는데, 신용카드 결제 관련 약관이 노출되지 않음.
- 날짜가 바뀌면 오늘의 데이터로 변경되어야 하는데, 자동으로 바뀌지 않아 어제 데이터로 머물러 있음
+ 시스템 에러(System Error)
- 프로그램 동작 중에 운영체제 또는 하드웨어에 문제가 발생해 프로그램이 정상적으로 동작하지 않는 경우에 발생하는 에러
'FE' 카테고리의 다른 글
[Vue3] [Vue warn]: Missing required prop: "list" 해결법 (0) | 2021.09.18 |
---|---|
[Vue3] lodash debounce 메서드 vue에서 사용하는 방법 (0) | 2021.09.17 |
웹팩의 핵심 구성 요소 4가지, 프론트엔드 개발에 꼭 필요한 추가 요소 (0) | 2021.09.11 |
웹팩(Webpack)의 역할과 프론트엔드 개발에 웹팩이 필요한 이유 (0) | 2021.09.10 |
컴파일러(compiler) 의미, 바벨(Babel) vs 타입스크립트 컴파일러(TypeScript Compiler) (0) | 2021.09.08 |