Java 언어에서는 예외나 에러가 발생할 때 Throwable 클래스 개체를 던져 개발자 코드에서 이를 잡아 처리할 수 있게 하고 있습니다. 이는 Throwable은 예외와 에러의 기반 클래스라는 말입니다.
예외(Exception)는 비교적 가벼운 오류로 개발자가 프로그램 방식으로 처리할 수 있다고 판단하는 상황에 발생하며 에러(Error)는 치명적인 오류가 발생하여 개발자가 처리할 수 없다고 판단하는 상황에 발생하는 것입니다.
예를 들어 프로그램에서 열고자 하는 파일이 없을 때는 예외를 발생합니다. 하지만 스레드의 자원 경쟁 문제에서 교착 상태에 빠지거나 가상 머신에서 문제가 발생하면 오류를 발생합니다.
다음은 배열의 유효하지 않은 인덱스를 사용할 때 발생하는 ArrayIndexOutOfBoundsException을 던져졌지만 개발자가 이를 잡아 처리하지 않았을 때의 코드와 출력 내용입니다.
▷ 소스 2.1 유효하지 않은 인덱스 사용할 때의 예외 발생 코드
//유효하지 않은 인덱스 사용하였을 때 public class Program { public static void main(String[] args){ int[] arr = new int[3]; System.out.println("배열 생성"); arr[4] = 7; System.out.println("arr[4]에 7 대입"); } }
▷ 소스 2.1 실행 결과
배열 생성 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 at Program.main(Program.java:6)