728x90
프로그램 오류
컴파일 에러 : 컴파일 시에 발생하는 에러
런타임 에러 : 실행 시에 발생하는 에러
논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것
런타임 에러를 방지하기 위해서는 프로그램의 실행 도중 발생할 수 있는 모든 경우의 수를 고려하여 이에 대한 대비를 하는 것이 필요하다. 자바에서는 실행 시(runtime) 발생할 수 있는 프로그램 오류를 ‘에러(error)’와 ‘예외(exception)’, 두 가지로 구분하였다.
에러(error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
예외(exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류
에러는 메모리 부족(OutOfMemoryError)이나 스택오버플로우(StackOverflowError)와 같이 일단 발생하면 복구할 수 없는 심각한 오류이고, 예외는 발생하더라도 수습될 수 있는 비교적 덜 심각한 것이다.
예외 클래스의 계층 구조
Exception과 Error클래스 역시 Object클래스의 자손들이다.
모든 예외의 최고 조상은 Exception클래스이며, 상속계층도를 Exception클래스부터 도식화하면 다음과 같다.
위 그림에서 볼 수 있듯이 예외 클래스들은 다음과 같이 두 그룹으로 나눠질 수 있다.
Exception과 Runtime Exception
Exception클래스들 : 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외
RuntimeException클래스들 : 프로그래머의 실수로 발생하는 예외
RuntimeException클래스들은 주로 프로그래머의 실수에 의해서 발생될 수 있는 예외이다.
- 배열의 범위를 벗어난다.(ArrayIndexOutOfBoundsException)
- 값이 null인 참조변수의 멤버를 호출한다.(NullPointerException)
- 클래스 간의 형변환을 잘못했다.(ClassCastException)
- 정수를 0으로 나누려고 했다.(ArithemeticException)
- ....
Exception클래스들은 주로 외부의 영향으로 발생할 수 있는 것들로서, 프로그램의 사용자들의 동작에 의해서 발생하는 경우가 많다.
- 존재하지 않는 파일의 이름을 입력했다.(FileNotFoundException)
- 실수로 클래스의 이름을 잘못 적었다.(ClassNotFoundException)
- 입력한 데이터 형식이 잘못되었다.(DataFormatException)
반응형
'Server > 자바의정석' 카테고리의 다른 글
[Java 입문] throw, throws (0) | 2022.09.30 |
---|---|
[Java 입문] try - catch - finally (0) | 2022.09.30 |
[Java 입문] 디폴트 메서드 & Static 메서드, 내부 클래스 (1) | 2022.09.29 |
[Java 입문] 추상(abstract) & 인터페이스(Interface) (0) | 2022.09.28 |
[Java 입문] 다형성(polymorphism) (0) | 2022.09.28 |