04. 자바의 예외 처리
# 자바의 예외 처리
º 컴파일 오류
- 문법에 맞지 않게 작성된 코드
- 컴파일할 때 발견
º 예외(Exception)
- 오동작이나 결과에 악영향을 미칠 수 있는 실행 중 발생한 오류
-> 정수를 0으로 나누는 경우
-> 배열보다 큰 인덱스로 배열의 원소를 접근하는 경우
-> 존재하지 않는 파일을 읽으려고 하는 경우
-> 정수 입력을 기다리는 코드가 실행되고 있을 때, 문자가 입력된 경우
º 자바에서 예외 처리 가능
- 예외 발생 -> 자바 플랫폼 인지 -> 응용 프로그램에서 전달
- 응용 프로그램이 예외를 처리하지 않으면, 응용프로그램 강제 종료
# 예외 처리, try-catch-finally 문
º 예외 처리
- 예외가 발생할 때 대응하는 응용프로그램 코드
- try-catch-finally 문 사용
-> finally 블록은 생략 가능
try {
예외가 발생할 가능성이 있는 실행문(try 블록)
}
catch (처리할 예외 타입 선언) {
예외 처리문(catch 블록)
}
finally {
예외 발생 여부와 상관없이 무조건 실행되는 문장
(finally 블록)
}
# 자바의 예외 클래스
º 자주 발생하는 예외
예외 타입(예외 클래스) | 예외 발생 경우 | 패키지 |
ArithmeticException | 정수를 0으로 나눌 때 발생 | java.lang |
NullPointerException | null 레퍼런스를 참조할 때 발생 | java.lang |
ClassCastException | 변환할 수 없는 타입으로 객체를 변환할 때 발생 | java.lang |
OutOfMemoryError | 메모리가 부족한 경우 발생 | java.lang |
ArrayIndexOutOfBoundsException | 배열의 범위를 벗어난 접근 시 발생 | java.lang |
IllegalArgumentException | 잘못된 인자 전달 시 발생 | java.lang |
IOException | 입출력 동작 실패 또는 인터럽트 시 발생 | java.io |
NumberFormatException | 문자열이 나타내는 숫자와 일치하지 않는 타입의 숫자로 변환 시 발생 | java.lang |
InputMismatchException | Scanner 클래스의 nextInt()를 호출하여 정수로 입력받고자 하였지만, 사용자가 'a'등과 같이 문자를 입력한 경우 | java.util |
# 요약
- 자바의 반복문은 for 문, while 문, do~while 문의 3가지가 있음
- do~while 문은 for나 while 문과 달리, 조건식이 작업 문장 뒤에 있어 무조건 한 번 이상은 작업문이 수행
- 반복문 내의 작업문에 다시 반복문을 사용할 수가 있으며, 이를 중첩 반복이라 함.
- continue 문은 반복문 내에서 다음 반복으로 진행함.
- break 문은 속해 있는 반복문 하나를 완전히 빠져나갈 때 사용
- 배열은 같은 타입의 데이터들이 순차적으로 저장된 자료 구조
- 배열을 만드는 과정은 배열 레퍼런스 변수의 선언과 배열 생성의 두 과정으로 나뉨, 배열 레퍼런스 변수의 선언은 배열 객체의 주소 값을 가질 변수에 대한 선언이고, 배열의 생성은 배열 원소에 대한 순차적 저장 공간을 확보하는 것
- 정수 4개를 저장하는 배열은 다음과 같이 만듦. int [] array = new int[4]; 혹은 int array [] = new int [4];
- 배열 원소에 대한 접근은 배열 레퍼런스 변수명과 [ ] 사이에 원소의 인덱스를 적어 접근
- 배열은 자바에서 객체로 다루어짐
- 배열의 크기는 배열 객체의 length 필드에 저장되어 있으며, 배열의 첫번째 원소의 인덱스에는 0, 마지막 원소의 인덱스는 length-1이 됨.
- 배열 크기를 넘어서 접근하면 ArrayIndexOutOfBoundsException 예외가 발생
- 자바에서 main( )메소드에 인자 전달은 String 타입의 배열을 이용함.
- 자바 프로그램의 실행 중에 발생하는 오류로서 응용프로그램에서 try-catch 블록으로 잡아 처리할 수 있는 것을 예외(exception)라고 부름. 예외가 발생하면 자바 응용프로그램에게 전달됨.
- 자바 응용프로그램이 발생한 예외를 처리하는 코드를 작성해두지 않았으면 프로그램은 강제 종료됨.
- 자바 응용프로그램은 발생한 예외를 처리하기 위해 try-catch-finally 문을 사용
- try{ } 블록은 예외가 발생한 가능성이 있는 코드를 두고, catch( ) { } 블록에는 예외가 발생하였을 때 처리하는 코드를 작성. 예외가 발생하든 않든 최종적으로 실행하고자 하는 코드는 finally { } 블록에 작성함. finally 블록은 생략할 수 있음.
'JAVA > 자바 이론' 카테고리의 다른 글
Java | 4-2 클래스와 객체 (0) | 2021.04.14 |
---|---|
Java | 4-1 클래스와 객체 (0) | 2021.04.14 |
Java | 3-1 반복문과 배열 (0) | 2021.04.12 |
Java | 2-2 자바 기본 프로그래밍 (0) | 2021.04.11 |
Java | 2-1 자바 기본 프로그래밍 (0) | 2021.04.11 |