티스토리 뷰

JAVA/PRIMER

[JAVA] 예외처리

yulrang 2018. 4. 19. 14:14
import java.util.Scanner;

// 논리적 오류 -> 버그, 원하는 결과가 나오지 않을 때
// 컴파일 오류 -> 오타, 문법에 어긋난 코드			( error )
// 런타임 오류 -> 시행 중간에 오류가 발생, 비정상적 종료( exception )

public class 예외처리1 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int a = 10;
		
		System.out.print("10을 나눌 숫자 입력 : ");
		int b = in.nextInt();
		
		// try : 예외 발생할 가능성이 있는 코드들을 포함
		try{
			a = 10 /b;						// 런타임 오류 발생!
			System.out.println(a);			// 실행되지 않음
			
		}catch(ArithmeticException e) {		// 산술연산오류
			// catch : 예외가 발생했을 때 수행할 코드를 작성
			// catch( 예외 ) -> 발생할 예외의 종류 지정
			System.out.println("오류 발생!");
		}
	}

}
10을 나눌 숫자 입력 : 0
오류 발생!

import java.util.Scanner; public class 예외처리2 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int[] arr = {1,2,3}; int a = 10; System.out.print("정수 입력 : "); int b = in.nextInt(); // 종류별 오류의 처리 -> catch를 이어서 쓰면 됨 try{ System.out.println(a/b); // b가 0일경우 오류 System.out.println(arr[b]); // b가 4이상일경우 } catch( ArithmeticException e ){ System.out.println("산술 연산 오류! 0으로 나누면 안됩니다."); } catch( ArrayIndexOutOfBoundsException e ){ System.out.println("배열 범위 오류! 배열의크기는 3입니다."); } } }

정수 입력 : 10
1
배열 범위 오류! 배열의크기는 3입니다.


import java.util.Scanner;


public class 예외처리3 {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int[] arr = {1,2,3};
		int a = 10;
		int b = in.nextInt();

		// 모든 오류를 통틀어서 처리
		try{
			System.out.println(a/b);	// b가 0일경우 오류
			System.out.println(arr[b]);	// b가 4이상일경우
		} catch( Exception e ){
			System.out.println("오류!");
			System.out.println( e );
			System.out.println( e.getMessage() );
			e.printStackTrace();		// 오류가 발생한 메소드까지 출력함
		} finally{	// 예외 발생에 상관없이 반드시 실행하고자하는 코드 작성
			System.out.println("무조건 실행됨!");
		}
		
		// Exception 클래스 : 모든 예외클래스들의 super클래스
	}

}
정수 입력 : 10
1
오류!
java.lang.ArrayIndexOutOfBoundsException: 10
10
무조건 실행됨!
java.lang.ArrayIndexOutOfBoundsException: 10
at 예외처리3.main(예외처리3.java:17)


import java.util.Scanner;

class A{
	static void method1(int a){
		method2(a);
	}
	static void method2(int a){
		method3(a);
	}
	static void method3(int a){
		System.out.println(10/a);
	}
}
public class 에외처리4 {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.print("정수 입력 : ");
		int a = in.nextInt();
		
		try {
			A.method1(a);
		} catch(Exception e){
			e.printStackTrace();	// 오류가 발생하기까지 실행된 메소드들을 거꾸로 출력
		}
	}

}
정수 입력 : 0
java.lang.ArithmeticException: / by zero
at A.method3(에외처리4.java:11)
at A.method2(에외처리4.java:8)
at A.method1(에외처리4.java:5)
at 에외처리4.main(에외처리4.java:22)


// 어떤 메소드들은 반드시 예외처리를 해야 호출 가능함
// 방법 1 ) try-catch 예외처리
// 방법 2 ) 메소드에 throws 선언
public class 예외처리7 {

	public static void main(String[] args) {
		for(int i=10; i>=0; i--){
			System.out.print(i+" ");
			try{
				Thread.sleep(1000);
			}catch(Exception e){
				System.out.print("오류");
			}
		}
	}

}
10 9 8 7 6 5 4 3 2 1 0 


'JAVA > PRIMER' 카테고리의 다른 글

[JAVA] 파일입출력 - BufferedReader, BufferedWriter  (0) 2018.04.19
[JAVA] 파일입출력 - FileReader, FileWriter  (0) 2018.04.19
[JAVA] HashMap  (0) 2018.04.19
[JAVA] HashSet  (0) 2018.04.19
[JAVA] LinkedList  (0) 2018.04.19
댓글