JAVA

[ JAVA ] 예외와 예외처리 ( 3 )

dauneee 2022. 1. 15. 18:24

예외처리 미루기


예외처리 미루기는 클래스를 만들 필요없이

메인에서 바로 함수 선언(정의)을 하여 사용할 수 있다.

 

 


 

// 예외처리 미루기
public class Test02 {
	// 함수 선언, 정의
	static void func1() throws Exception {
		// 예외처리를 호출한 대상에게, 또는 공간으로 미루겠음
		// ArithmeticException 외의 예외도 가능성이 있음
		// -> 최상위 예외로 처리
		int a=10,b=0;
		System.out.println(a/b);
		System.out.println("func1() 함수 종료");
	}
	// static : 객체와 무관하게
	// 1. 클래스 변수(공유 자원)
	// 2. 클래스 외부에서 함수 단독 선언

	static void func2() throws Exception {
		Exception excep=new Exception("예외");
		throw excep;
		// 예외처리에 대한 로직이 여러개 중복될 수 있으므로(유지보수에 불리)
		// 예외처리를 미루어 처리
	}

	public static void main(String[] args) {
		try {
			func2();
			func1(); // 함수 호출
		}
		catch(Exception e) {
			System.out.println(e.getMessage()); // func2
			System.out.println("catch문"); // fucn1
		}
        finally {
			System.out.println("현재 59번라인");
		}
		// func1() 함수는, 현재 예외처리를 미루고 있음
		// 예외가 발생할 수 있기 때문에, 이 공간에서 처리
	}
}

 

 

public class Test01 {
	public static void main(String[] args) {
		ArrayList<Integer> data=new ArrayList<Integer>();
		data.add(0);
		data.add(1);
		data.add(2);

		System.out.println(data);
		
		// 데이터 출력하는 방법
		// 1.
		for(int i=0;i<data.size();i++) {
			System.out.println(data.get(i));
		}
		// 2.
		for(int v:data) { // 제네릭하지 않았다면 Object
			System.out.println(v);
		}
		// 3. 이터레이터 사용
		Iterator itr=data.iterator();
		while(itr.hasNext()) {
			System.out.println(itr.next());
		}
		
		// 예외처리 복습
		Scanner sc=new Scanner(System.in);
		while(true) {
			System.out.println(">> ");
			try {
				int num=sc.nextInt(); // 인덱스 선택
				System.out.println("선택한 데이터: "+data.get(num));
				
				System.out.println(10/data.get(num));
			}
			catch(ArithmeticException e) {
				System.out.println("계산 불가");
			}
			catch(IndexOutOfBoundsException e) {
				System.out.println("인덱스 범위 주의");
			}
			catch(InputMismatchException e) {
				sc.nextLine();
				System.out.println("입력값의 타입 주의");
			}
			finally { // 무조건 수행
				System.out.println();
				System.out.println("계산 완료");
			}
		}
	}
}