본문 바로가기
👨‍💻 프로그래밍/📦 Backend

자바 3 - 프로그래밍 에러의 종류

by 개발자 진개미 2021. 4. 6.
반응형

프로그래밍을 본격적으로 시작하기 전에, 우리가 프로그램을 짤 때 할 수 있는 실수들, 즉 에러들을 알아보자.

 


에러란 무엇인가

프로그래밍에서 에러(실수)는, 프로그램이 동작하지 않거나, 우리가 의도한 바와는 다르게 동작하는 것을 말한다. 프로그램이 동작하지 않는 경우는 문법이 틀렸거나, 다른 버그가 있을 경우가 있고, 프로그램이 의도한 바와는 다르게 동작한다면 그건 우리가 프로그램을 짤 때 사용한 논리가 틀렸을 가능성이 높다. 이를 각각 구문 오류(Syntax Error), 런타임 오류(Runtime Error), 논리 오류(Logic Error) 라고 한다. 


구문 오류 (Syntax Error)

구문 오류란, 쉽게 말해 문법이 틀렸다는 것이다. 프로그래밍 언어는 반드시 따라야 하는 규칙들이 존재한다. 만약에 이런 규칙을 지키지 않을 때 일어나는 오류가 구문 오류이다.

public class SyntaxError {
	public static void main(String[] args) {
    	var1 = 30; //구문 오류, 모든 변수는 타입을 반드시 명시해야 함.
    }
}

위의 예제에서는 변수를 선언했지만, 그 타입(정수인지, 소수인지 등)을 명시하지 않았다. 자바에서는 모든 변수는 그 타입을 명시해야 한다는 규칙이 있으므로, 이 규칙을 지키지 않은 프로그램은 동작하지 않는다.

 

다행이게도, 구문 오류는 주료 컴파일러가 쉽게 찾아 낼 수 있다.


런타임 에러 (Runtime Error)

런타임 에러는, 프로그램이 동작하고 있는 와중에 발생하는 에러이다. 주로 정상적이지 않는 동작을 컴퓨터에 요구할 경우 생긴다.

public class RuntimeError {
	public static void main(String[] args) {
    	int var1 = 1 / 0;
    }
}

위의 예제에서는 1을 0으로 나눌려 해서 에러가 발생했다. 


논리 오류 (Logic Error)

논리 오류는, 프로그램이 잘못된 결과를 도출하는 에러이다. 개인적으로는 논리 오류가 가장 해결하기 어려운 에러라고 생각한다.

public class LogicError {
	public static void main(String[] args) {
    	int number = 5;
        if((1 < number) && (number < 100))
        	System.out.println("숫자가 1과 100 사이에(1과 100 포함) 있습니다.");
    }
}

위의 프로그램은 숫자가 1과 100 사이(1, 100 포함)에 있는지를 판단하는 프로그램인데, (1 < number)과 (number < 100)를 주목해 보면, 1과 100이 포함되지 않는 걸 알 수 있다. 즉, 우리가 원래 의도한 프로그램의 결과에 맞지 않게 프로그램이 짜인 것이다.


혹시 모르는 점이나 더 궁금한 점, 지적할 점이 있으면 언제든지 댓글 남겨주세요. 늦어도 24시간 이내에 답변드립니다

 

반응형