Notice
Recent Comments
Recent Posts
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
Total
관리 메뉴

기록 > 기억

[JAVA] 예외 처리 본문

IT국비지원

[JAVA] 예외 처리

BY SON 2021. 10. 25. 12:04

예외 처리

 

● 예외 및 예외 종류

하드웨어 문제로 인한 에러가 아닌 사용자가 잘못 조작했거나 개발자가 잘못 코딩했을 때 발생하는 오류
예외 발생시 프로그램은 바로 종료되는데 예외처리는 프로그램 전체가 중단되지 않기 위한 조치

① 일반 예외(Exception) → 컴파일 시 예외처리 검사
② 실행 예외(Runtime Exception) → 컴파일 시 검사하지 않고 실행될 때 예외 발생

 

● 실행 예외 (Runtime Exception)

NullPointerException  참조변수의 값이 null 인데 객체 접근 연산자 도트를 사용했을 때 발생
 ArrayIndexOutOfBoundsException  배열의 인덱스 범위를 초과 했을 때 발생
NumberFormatException  문자열을 숫자로 변환할 때 숫자가 아닌 문자가 포함되어 있을 때 발생
ClassCastException  엉뚱한 타입으로 타입 변환 할 때 발생

 

● try ~ catch ~ finally

public class TryCatchFinally {	
	public static void main(String[] args) {
		try {
			Class.forName("com.mysql.cj.jdbc.Driver2");  //컴파일 에러
			System.out.println("클래스를 찾았습니다.");   //예외발생시 프로그램 중단 → 실행안됨
		} catch (ClassNotFoundException e) {
			System.out.println("존재하지 않는 클래스입니다."); //에러 처리
		} finally {
			System.out.println("프로그램을 종료합니다.");	//항상 실행
		}
	}
}

 

● 다중 catch

public class MultiCatch {
	public static void main(String[] args) {
		try {
			String str1 = args[0];
			String str2 = args[1];
			
			int num1 = Integer.parseInt(str1);
			int num2 = Integer.parseInt(str2);
			
			System.out.println(num1 + num2);
		}catch(ArrayIndexOutOfBoundsException e) {
			System.out.println("매개변수의 수가 부족합니다.");
		}catch(NumberFormatException e) {
			System.out.println("숫자로 변환할 수 없습니다.");
		}		
	}
}

 

● try~catch~finally / throws Exception / throw new Exception

public class ExceptionHandling {
	
	//(1) try ~ catch [ ~ finally ] → 예외가 발생할만한 곳에 직접 처리 (try ~ catch)
	public void tryCatchException() {
		try {
			for(int i=5; i>=0; i--) {
				double d = 10/i;
				System.out.println("10/" + i + " = " + d);
			}
		} catch(ArithmeticException e) {
			System.out.println("try ~ catch : 예외발생");
		} finally {
			System.out.println("무조건 실행");
		}
		System.out.println("프로그램 정상종료");
	}
	
	//(2) throws Exception → 메소드를 호출한 곳으로 예외 넘기면 호출한 곳에서 예외처리
	public void throwsException() throws ArithmeticException {
		int a = 10/0;
	}
	
	//(3) throw new Exception 
	public void throwException() {
		try {
			int a = 10/4;
			throw new ArithmeticException();
		} catch(ArithmeticException e) {
			System.out.println("throw : 강제로 예외 발생");
		}
	}	
}
public class TestMain {
	public static void main(String[] args) {
		
		ExceptionHandling eh = new ExceptionHandling();
		
		//(1) try ~ catch
		eh.tryCatchException();
		
		//(2) throws Exception
		try {
			eh.throwsException();
		} catch(ArithmeticException e) {
			System.out.println("throws : 예외 발생");
		}
		
		//(3) throw new Exception
		eh.throwException();
	}
}

 

'IT국비지원' 카테고리의 다른 글

[JAVA] 스레드  (0) 2021.10.27
[JAVA] 기본 API 클래스  (0) 2021.10.26
[JAVA] 문자열 (String)  (0) 2021.10.26
[JAVA] 인터페이스  (0) 2021.10.25
[JAVA] 상속  (0) 2021.10.24
[JAVA] 객체와 클래스  (0) 2021.10.24
[JAVA] 참조 타입  (0) 2021.10.24
Comments