프린세스 다이어리

프론트엔드 컴파일 에러(Compile Error) vs 런타임 에러(Runtime error) vs 논리 오류(Logical Error), 예시 본문

FE

프론트엔드 컴파일 에러(Compile Error) vs 런타임 에러(Runtime error) vs 논리 오류(Logical Error), 예시

개발공주 2021. 9. 9. 12:46
728x90

오류의 종류를 나누는 이유

오류를 최대한 빨리 고치기 위해서.

- 어디서 오류가 났는지 알면 빠르게 대처할 수 있음. 논리 오류가 난 소스에서 구문이 잘못되었는지 볼 필요는 없다. 

 

1. 컴파일 에러(Compile Error)

문법오류(Syntax Error) 등이 해당됨. 파싱 에러(Parsing Error)라고도 불림. 컴파일하는 동안에 발생하기 때문에 다른 스레드에는 전혀 영향 주지 않음. 

- 컴파일러/인터프리터가 소스 코드를 바이트 코드로 변환하면서 발견한 오류를 출력함

- 컴파일 시에 에러 메시지로 오류의 위치를 알려주기 때문에 찾기 쉬운 에러임

- 수정되지 않으면 프로그램은 컴파일되지 않음

- 해당 오류 코드가 포함된 동일 쓰레드 상에만 오류 처리가 되고, 다른 쓰레드의 코드는 오류가 없는 것처럼 처리되어 실행됨.

 

예시:
- 타입 구문에 해당하지 않는 속성 이름으로 오타를 내 타입에러가 발생함

 

2. 런타임 에러(Runtime Error)

컴파일 후 프로그램이 실행하는 동안에 발생함. 런타임 에러라는 게 프로그램 실행 시 일어나는 에러라는 뜻이기 때문에, 큰 범위의 에러를 포함함

- 프로그램에서 수행할 수 없는 작업을 시도할 때 발생함. 프로그램 발생 시 설계 미숙으로 인한 경우가 많다고 함.

- 대부분 try-catch문을 이용해 에러를 해결할 수 있음.

- 런타임 에러에는 논리 에러, 시스템 에러 등이 있음. 

- 다른 스레드가 정상적으로 실행할 수 있도록 해당 스레드에만 영향을 미침.

 

예시: 
- 웹뷰에서 iOS로 메시지를 전달하려고 할 때, 존재하지 않는 메서드 이름으로 호출함
- 응답값으로 구매 혜택 리스트를 받아서 보여줘야 하는데, 빈 배열이 내려오는 경우를 고려하지 못함

 

3. 논리 오류(Logical Errors)

프로그램 실행에 아무런 문제가 발생하지 않지만 논리적으로 잘못되어 예상한 결과가 안 나오는 오류.

- 비즈니스 로직 또는 요구 사항에 따라 개발되었지만, 예상했던 응답값이 내려오지 않았을 경우 발생할 수 있음

- 어디서 꼬였는지 눈에 드러나지 않아 디버그 모드로 단계별로 실행하면서 찾음.
- 물론 내가 구현한 로직이 잘못되어서 발생하는 에러

 

예시: 
- 주문페이지에서 신용카드결제를 선택했는데, 신용카드 결제 관련 약관이 노출되지 않음.
- 날짜가 바뀌면 오늘의 데이터로 변경되어야 하는데, 자동으로 바뀌지 않아 어제 데이터로 머물러 있음

 

+ 시스템 에러(System Error)

- 프로그램 동작 중에 운영체제 또는 하드웨어에 문제가 발생해 프로그램이 정상적으로 동작하지 않는 경우에 발생하는 에러

 

728x90
Comments