개발 일지/Java

[Java] 에러(Error)

미숫가루설탕많이 2023. 1. 4. 13:32

 프로그램을 만들거나 실행하다 보면 에러와 마주치는 상황이 자주 발생할 것이다. 에러(error)가 발생하면 프로그램은 의도한 대로 동작하지 않거나 심각한 경우에는 비정상적으로 종료되기도 한다.

 

 에러가 발생하는 원인은 수없이 다양하며, 크게 외부적인 요인과 내부적인 요인으로 구분할 수 있다.

 

 대표적인 외부적인 요인으로는 하드웨어의 문제, 네트워크의 연결 끊김, 사용자 조작 오류 등이 있고 내부적인 요인으로는 대표적으로 개발자의 코드 작성 에러가 있다.

 

 

 

 

컴파일 에러, 런타임 에러

 

 코드를 작성하다 보면 IDE에서 빨간 줄로 잘못된 부분을 표시해주는 모습을 확인할 수 있다. 이러한 경우를 컴파일 에러(Compile Time Error)라고 하며, IDE에서는 아무런 경고를 보내주지 않았는데 코드를 실행한 시점에서 에러가 발생하는 경우를 런타임 에러(Run Time Error)라고 한다. 이 둘의 차이점은 에러 발생의 시점이 다르다는 것이다.

 

 먼저, 컴파일 에러는 말 그대로 '컴파일 할 때' 발생한다. 주로 세미콜론을 생략한다거나, 오탈자, 잘못된 자료형 등 문법적인 문제를 가리키는 신택스(syntax) 오류로부터 발생하기 때문에 신택스 에러라고 부르기도 한다.

 

 컴파일 에러는 자바 컴파일러가 오류를 감지하고 사용자에게 친절히 알려주기 때문에 상대적으로 쉽게 발견하고 수정할 수 있다. 

 

 그리고 런타임 에러는 '프로그램이 실행될 ' 발생하는 에러이다. 코드를 입력한 후에 보면 겉으로는 아무런 문제가 없는 것처럼 보이지만 실행시켰을 때 발생하는 에러를 말한다.

 

 컴파일 에러는 자바 컴파일러에 의해 발견되는 것이라면, 런타임 에러는 프로그램이 실행될 때 자바 가상 머신(JVM)에 의해 감지된다.

 

 

 

 

에러와 예외

 

프로그램 실행 시 발생할 수 있는 모든 문제를 넓은 의미에서 에러라고 불렀지만, 사실 엄밀한 의미에서 런타임 시에 잠재적으로 발생할 수 있는 프로그램 오류를 크게 에러와 예외(exception)으로 구분하고 있다.

 

  • 에러(error) : 한번 발생하면 복구하기 어려운 수준의 심각한 오류
  • 예외(exception) : 잘못된 사용 또는 코딩으로 인한 상대적으로 미약한 수준의 오류로, 코드 수정을 통해 수습이 가능한 오류