본문 바로가기
Java

예외 처리 ( Exception Handling )

by KDW999 2023. 1. 11.

예외

ㅡ 프로그램 실행 중 발생한 오류중에서 처리가 가능한 오류

 

 에러  개발자가 조치를 취할 수 없는 수준 ( 메모리 부족, JVM 문제 )
 컴파일 에러  컴파일 시 발생하는 에러 (오타, 잘못된 자료형)
 런타임 에러  프로그램 실행 중 발생하는 에러
 로직 에러  실행은 되나 생각한 것관 다르게 작동하는 에러
 예외  다른 방식으러 처리 가능한 오류 ( 입력 값 오류, 네트워크 문제 )

 

예외 처리

ㅡ 예외 발생 시 미리 대처하는 코드를 작성하여 프로그램이 비정상적으로 종료되는 것을 막음

 

try-catch-finally

try catch : 예외를 처리하기 위한 구문

try문에는 예외가 발생할 수 있는 코드를 작성 / catch문에는 예외가 발생할 경우 처리할 방법을 작성

 

finally :  try catch문에 선택적으로 추가 / 예외 발생에 상관없이 무조건 실행되는 코드 구문 / 외부와의 연결 종료에 주로 사용

 

               try { 
			// 예외가 발생할 수 있는 로직
			int result = 10 / 0;
		    System.out.println(result);
			
		} catch (Exception e) {
			// try 구문에서 예외가 발생했을 때 실행하는 로직
			System.out.println("0으로 나눌 수 없음");
		} finally {
			System.out.println("종료합니다"); // 무조건 실행
		}

출력 화면

catch문에선 발생할 예외의 종류를 설정할 수 있으며 Exception 클래스가 대부분의 예외를 포함하고 있는 상위 클래스라고 한다.

 

throw

ㅡ throw를 이용하여 고의로 예외 발생 가능

 

public class Test {
	public static void main(String[] args) {

		try {
			Exception e = new Exception("고의 예외");
			throw e; // 에러 발생
		} catch(Exception e) {
			System.out.println("예외 발생");
			System.out.println(e.getMessage()); 
		}
	}
}

출력 화면

throws

ㅡ 예외 발생 시 현재 메서드가 예외를 처리하지 않고 호출한 쪽으로 예외 처리 책임을 전가한다.

 

public class Test {
	static void printArray(int index) throws Exception { // 예외 처리를 호출하는 곳에 짬때림
		int[] array = new int[] { 1, 2, 3 };
		System.out.println(array[index]);
		System.out.println("인덱스 범위 벗어남");
	}

	public static void main(String[] args) {
		try {
			printArray(5);
		} catch (Exception e) {
			System.out.println("인덱스 범위 밖입니다.");
		}
	}

}

출력 화면

 

'Java' 카테고리의 다른 글

ArrayList  (0) 2023.01.12
컬렉션 프레임워크 ( Collection Framework ) / 제네릭 ( Generic )  (0) 2023.01.12
추상 클래스 ( Abstract Class ) / 인터페이스 ( Interface )  (0) 2023.01.10
다형성 ( Polymorphism )  (0) 2023.01.10
HashMap  (0) 2023.01.10

댓글