Back-End/JAVA

[Java] 예외 처리

챌링킴 2021. 5. 28. 21:53
반응형

1) 에러와 예외의 차이

1. 에러

   심각한 오류

2. 예외

   덜 심각한 오류

 

2) try ~ catch ~ finally

    try{

            예외가 발생할 수 있는 문장1

            예외가 발생할 수 있는 문장2

        }

    catch( 예외클래스명 객체명 ){

             예외 발생시 실행할 문장

        }

    catch( 예외클래스명 객체명 ){

             예외 발생시 실행할 문장

        }

     ... (catch문은 여러개 가능)

     fianlly{

           예외 발생 유무에 상관없이 무조건 실행할 문장

        } // finally문은 생략 가능

 

** 해당 구문 블럭처리 후 alt + shift + z + 아래화살표 : try~catch 블럭 만들기 **

package exception;

public class ExceptionTest {
	public static void main(String[] args) {
		
		try {
			System.out.println(1+2);
			System.out.println(10-9);
			System.out.println(10/0);
			System.out.println(10*3);
		} catch (ArithmeticException ae) {
			System.out.println("0으로는 나눌 수 없음");
		}
	}
}

3) Exception 클래스

예외 클래스들의 부모 클래스

package exception;

import java.util.InputMismatchException;
import java.util.Scanner;

public class ExceptionTest2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (true) {
			sc = new Scanner(System.in);
			try {
				System.out.println("첫번째 정수 : ");
				int num1 = sc.nextInt();
				System.out.println("두번째 정수 : ");
				int num2 = sc.nextInt();

				System.out.println("나눗셈 결과 : " + num1 / num2);
			} catch (ArithmeticException ae) {
				System.out.println("0으로는 나눌 수 없음");
			} catch (InputMismatchException ime) {
				System.out.println("정수만 입력해주세요");
				
			} catch (Exception e) {
				System.out.println("알 수 없는 오류 발생 / 개발자에게 알려주세요");
			}
		}
	}
}

4) throws

메소드 선언부 내부에서 예외 발생시 무시하고 호출한 곳으로 떠넘긴다.

 

리턴타입 메소드명( ) throws 예외1, 예외2, ...{

         내부는 예외1, 예외2, ... 무시하는 구역

}

 

 

반응형

'Back-End > JAVA' 카테고리의 다른 글

[Java] Wrapper Class  (0) 2021.05.31
[Java] Object 클래스  (0) 2021.05.31
[Java] 익명 클래스(anonymous inner class)  (0) 2021.05.28
[Java] 내부 클래스(inner class)  (0) 2021.05.28
[Java] 인터페이스(interface)  (0) 2021.05.27