어 나 갱수.

프로그래밍의 오류 종류 본문

카테고리 없음

프로그래밍의 오류 종류

김경수 2024. 8. 22. 11:12
728x90

프로그램을 실행시켜 보면 다양한 레벨에서 오류가 발생하게 됩니다. 개발자가 의도하지 않은 방향으로 프로그램이 실행되거나 메모리에 공간이 부족해서 시스템이 오작동할 수 있습니다. 심각한 경우에는 실행 중인 프로그램이 강제로 종료될 수 있습니다.

프로그램에 오류가 발생하는데에는 다양한 이유가 있습니다. 비즈니스 로직의 논리적인 문제 때문에 오류가 발생할 수 있고, 로직과 연결된 하드웨어에 문제가 생겨 프로그램이 작동 안 할 수 있습니다.

 

프로그램을 다루다 보면 크게 3가지의 오류를 볼 수 있습니다.

 

  • 컴파일 에러
  • 논리 에러
  • 런타임 에러

컴파일타임 런타임이란

런타임과 컴파일타임은 프로그램 개발을 하면서 나눈 두 계층입니다. 프로그램을 만들기 위해서는 코드를 작성해야하고 그 코드를 기계어 코드로 변환해야 합니다. 개발자가 작성한 코드를 기계어로 바꾸는 작업을 하는 과정을 컴파일타입이라고 합니다. 컴파일 과정을 마친 프로그램을 실행시키면서 프로그램이 사용자에 의해서 동작되는 과정을 런타임이라고 부릅니다. 

컴파일 에러

컴파일러가 알려주는 에러로 코드가 문법적으로 틀리거나 수정이 필요한 경우 발생한다. 컴파일 에러 발생의 대표적인 원인으로 문법 구문 오류(syntax error)를 들 수 있다. String 타입 필드에 Int로 값을 넣거나 ;와 같은 문장부호를 사용하지 않는 경우도 발생할 수 있습니다.

 

사실 컴파일은 자바코드 (java.c)를 바이트 코드로 변환해주는 작업을 말합니다. 이렇게 컴파일하는 과정에서 발생하는 에러를 컴파일 에러라고 부르는데 인텔리제이와 같은 IDE를 사용하면 일정 주기로 자동으로 컴파일을 해주기 때문에 바로바로 문제를 알고 해결할 수 있다는 장점이 있습니다.

 

컴파일에러는 런타임에러에 비하면 크게 문제되는 에러가 아닙니다. 실제로 운영되면서 특정 기능에 대한 에러가 발생한 것이 아니라 개발 단계에서 아직 배포되지 않은 기능을 개발하면서 발생하는 즉 내가 짠 코드가 컴파일이 안된다는 오류이기 때문에 충분히 문제를 인지하고 바로바로 문제를 해결하고 방지할 수 있습니다.

 

아래와 같은 컴파일 에러는 status는 Boolean 타입입니다. 그러나 값을 주입할 때 20이라는 Int 값을 주입하였기 때문에 컴파일러에서 에러를 발생시킵니다.

 

위와 같이 컴파일러를 통해 발생하는 문제를 바로바로 캐치하고 해결하면 컴파일에러는 손쉽게 해결할 수 있습니다.

런타임 에러

컴파일러를 통해 컴파일에는 문제가 없는 프로그램을 구현해도 프로그램을 실제로 사용하면서 발생하는 다양한 에러가 생길 수 있습니다.

대체로 런타임 에러는 개발자가 비즈니스 로직을 짜면서 예측이 가능한 부분이 많습니다. 그래서 개발자는 비즈니스 로직을 짜면서 런타임에러가 발생할 거 같은 부분을 미리 예측하고 그 에러가 발생하는 상황을 방지할 수 있어야 합니다.

논리 에러

문법적 에러도 아니고 컴파일 및 프로그램 실행도 정상적으로 돌아가지만 개발자가 의도한 대로 기능이 작동하지 않는 에러를 의미합니다. 프로그램 로직상의 문제입니다. 개인적으로 생각해 봤을 때 논리 에러가 가장 개발자에게 까다로운 에러라고 생각합니다. 컴파일에러 런타임 에러 모두 문제가 발생하면 에러를 발생시키고 개발자는 그 에러를 해결하면 됩니다. 그러나 논리 에러는 컴파일 및 프로그램을 실행시키는 데는 문제가 없기 때문에 개발자의 실수로 로직을 잘못 짜고 그 문제에 대해서 인지하지 못하고 있다면 아주 큰 문제가 될 수 있기 때문입니다.

 

프로그램에서는 다양한 오류가 발생합니다. 발생한 오류가 어떤 오류인지 잘 구분하고 해당하는 오류에 대한 적절한 해결방법을 오류를 통해 오류를 해결하고 다시 발생하지 않도록 처리하는 것이 중요합니다.

728x90