에러
compile error
: 컴파일 시점에서 발생하는 에러, 잘못된 구문/ 소스의 오타 등의 검사를 수행할 때 발생, 이 문제들을 수정한 후 컴파일을 성공적으로 마칠 경우 클래스 파일 생성
runtime error
: 프로그램 실행 시점에서 발생하는 에러, 컴파일이 문제없이 수행되어도 실행도중 의도치 않은 동작에 대처하지 못해 에러가 발생할 수 있음
- error : 메모리부족이나 스택오버플로우와 같이 일단 발생하면 복구할 수 없는 심각한 오류
- exception : NullPointerException과 같이 발생하더라도 수습이 가능한 덜 심각한 오류
예
- NullPointerException(NPE) : 객체 참조가 없는 상태, 즉 null 값을 가지고 있는 참조 변수로 객체 접근 연산자인 도트(.)를 사용했을 때 발생
- ArrayIndexOutOfBoundsException : 할당된 배열의 인덱스 범위를 초과해서 사용할 경우 발생
- ArithmeticException : 어떤 수를 0으로 나눌 때 발생
- ClassCastException : 적절치 못하게 클래스를 형 변환하는 경우에 발생
- IOException : 입출력에 관한 예외 발생
- IllegalArgumentException : 적합하지 않거나 적절하지 못한 인자를 메서드에 넘겨줬을 때 발생
logical error
: 컴파일도 정상적으로 되고 런타임상 에러가 발생하는 것도 아닌 개발자의 의도와 다르게 동작하는 에러
(참고 : https://help.acmicpc.net/judge/rte)