JAVA/java 공부

[JAVA] 예외 처리 exception

congs 2023. 9. 12. 00:45

 

Exception : 예외 처리

: 실행 시 발생할 수 있는 예외를 처리하여 정상 처리로 유지시키는 기능

 

1. 구조

  • try-catch-finally (finally는 선택사용)
  • .printStackTrace(); 오류(예외)가 어디에서 발생하는지 알려주는 역할
		double res =0;
		int num = 10;
		int num1 =0;
		
		try {
			//예외가 발생할 수 있는 구문
			int sum=num1 + num;
			System.out.println("sum => " + sum);
			
			res = num / num1;
			System.out.println(res); //오류
			
		} catch (Exception e) {
			//예외가 발생할 경우 처리하는 실행문
			System.out.println("0으로 나누었습니다. Exception 발생!");
		}finally {
			//try구문과 반드시 실행되어야하는 구문이 있을 경우 사용 (없으면x)
			System.out.println("꼭 처리되어야하는 구문");
			System.out.println(e.getMessage());
			e.printStackTrace(); 
			//printStackTrace(); : 오류(예외)가 어디에서 발생하는지 알려주는 역할
			// java.lang.RuntimeException: num2는 0이 될 수 없습니다.
			//at day12.Exception02.calc1(Exception02.java:79)
			//at day12.Exception02.main(Exception02.java:15)
		}
		System.out.println("종료");

 

2. 자주 발생하는 예외

public class Exception03 {

	public static void main(String[] args) {
		/* 자주 발생하는 예외 코드들
		 * 
		 * 
		 * */
		
		//1. ArithmenticException : 0으로 나누었을 경우 발생
		double a = 1/0;
		System.out.println(a);
		
		//2. ArrayIndexOutOfBoundsException : 배열의 index가 범위를 벗어난 경우
		int arr[] = new int[5];
		for(int i=0; i<=arr.length; i++) {
			System.out.println(arr[i]);
		}
		
		//3. ClassCastException : 클래스의 다운 캐스팅이 잘못되었을 경우 (형변환 오류)
		P p = new P();
		
		//4. NullPointerException : 객체가 생성되지 않은 경우
		C c = null;
		c.print();
		

	}

}
class P{
	int num = 10;
}
class C extends P{
	int num1 = 100;
	void print() {
		System.out.println(num1);
	}
}