Programing_Java
Section#14 _ 예외 처리 본문
#1 에러(Error)와 예외(Exception)
: Java는 에러 or 예외가 발생할 경우, 클래스로 관리 → 컴파일 or 실행 중 문제가 발생하면 해당 문제에 따른 클래스 객체를 생성
#1-1. 에러(error)
: 에러는 개발자가 예측하거나 처리할 수 없는 영역
: 시스템에 비정상적인 상황이 생겼을 경우 → 외부 요인, 프로그램 구동 중 치명적 오류
: Ex) 메모리 부족, 입출력 에러, ...
#1-2. 예외(exception)
: 프로그램 구동 중에 나타나는 오류들 → 문법적으로 문제가 없어보여도 실제 운영 중에 생기는 문제들
#2 예외 클래스
: 시스템은 무슨 이유로 예외가 발생했는지 예외 클래스를 에러 메시지로 출력해줌
#2-1. NullPointerException
: 가장 빈번하게 발생하며, 우리가 많이 볼 예외
: 객체가 생성되지 않은 상태에서 사용할 경우 발생 → 객체는 정의되었는데 실제 메모리에 생성되지 않을 경우
// NullPointerException 예제
//배열의 변수를 생성하고 선언하지 않음
String[] Array = null;
// 없는 배열을 출력하려고 함
System.out.println("Array[0] = " + Array[0]);
// 결과
NullPointerException 예외 발생
#2-2. NumberFormatException
: 잘못된 문자열을 숫자로 형 변환할 경우 발생
String str01 = "11";
String str02 = "11.11";
// 정수 형태의 문자열을 정수로 변환
int num01 = Integer.parseInt(str01);
// 실수 형태의 문자열을 정수로 변환
int num02 = Integer.parseInt(str02);
// 결과
num01은 정상 출력
num02는 NumberFormatException 예외 발생
#2-3. ArrayIndexOutOfBoundsException
: 인덱스 배열을 초과해서 사용할 때 발생
// 길이가 5인 배열 생성
int[] arr = new int[5];
int[] arr = {1,2,3,4,5};
// 5번 인덱스를 사용하려함
System.out.println(arr[6]);
// 결과
ArrayIndexOutOfBoundsException 예외 발생
#3 예외 처리 문법
#3-1. 예외 처리 과정
1) 코드 진행 중 예외가 발생하면 JVM에 알림
2) JVM은 발생한 예외를 분석, 알맞은 예외 클래스 생성
3) 생성된 예외 객체를 발생한 지점으로 보냄
4) 예외가 발생한 지점에서 처리하지 않으면 프로그램은 비정상 종료
#3-1. try-catch문
: catch 메서드는 예외 클래스를 받아서 처리
try{
// 예외가 발생할 수 있는 코드
}
catch(예외클래스명 e){
// 예외 처리 코드
}
finally{
// 반드시 처리해야 하는 코드
}
: 예외를 처리할 때 Exception 클래스를 이용하면 모든 예외 처리 가능
→ 하지만 최상단에 쓴다면 아래로 내려가면서 확인하기 때문에 그 후의 예외는 처리하지 않음
#3-3. 다중 catch 사용
: 다중 catch문은 예외별로 예외 처리 코드를 다르게하여 처리 가능: 예외를 다중 처리하여 프로그램을 구성하면 코드에서 발생하는 다양한 예외 처리 가능 → 보다 안정적인 프로그래밍 가능
#3-4. finally
: 예외 발생 유무와 상관없이 실행되는 구문, 생략 가능: 예외와 상관없이 반드시 처리해야 하는 구문들을 작성 → 예외가 발생해도 정상 종료되어야 할 구문들에서 사용
#4 예외 던지기
: 메서드 내부에서 예외를 처리하지 않고, 해당 메서드를 호출한 쪽에서 예외를 처리하도록 하는 방법
: 예외 던지기를 하는 이유 → 메서드에서 각각 처리할 경우 : 메서드 자체의 코드가 길어지거나, 유지 보수 측면에서 효율이 떨어질 수 있음
→ 메서드를 호출하는 쪽에서 예외를 처리해주면 수월해질 수 있음
#4-1 throws 키워드
: 메서드 뒤에 throws 키워드를 사용하여 던지기 할 예외 객체를 붙임: 여러개를 던질 수 있으며, 여러개를 던질 시 콤마(,)로 구분하여 나열
#4-1-1. 예외 클래스 여러개 던지기
void 메서드명 throws NullPointerException, ClassNotFoundException, ...{}
#4-2 임의의 예외 처리 방법
: 프로그램의 규칙에 위배되어 예외를 발생해야 할 경우, 임의로 예외를 발생시킬 수 있음
: 개발자의 의도로 인해 발생 → 위치 : try-catch문의 내부 or 예외 던지기가 구현된 메서드 안
#5 사용자 정의 예외 처리
: 목적에 따라 공통기능을 지니는 예외 처리도 필요하기 때문에 개발자가 직접 예외를 생성해서 처리
: 사용자가 만든 클래스에 Exception 또는 RuntimeException을 상속하면 해당 클래스를 예외 처리 객체로 사용 가능
► 최상위 객체 Exception 을 상속할 경우 : 체크 예외를 만들고 싶을 경우
► RuntimeException 을 상속할 경우 : 비체크 예외를 만들고 싶을 경우
: 사용법은 기존 예외 객체들과 동일
class InputErrorException extends Exception{}
'MENTOR JAVA' 카테고리의 다른 글
Section#16 _ 컬렉션 프레임워크 (0) | 2025.01.23 |
---|---|
Section#15 _ 기본 API 클래스 (0) | 2025.01.22 |
Section#13 _ 내부 클래스 (0) | 2025.01.20 |
Section#11 _ 다형성과 타입 변환 (1) | 2025.01.18 |
Section#10 _ 상속 (0) | 2025.01.17 |