PLOD

[Java] Exception(예외 처리) 본문

개발 공부/Java

[Java] Exception(예외 처리)

훌룽이 2023. 1. 23. 10:20

 

자바에서 일어날 수 있는 Exception은 에러와 예외가 있다. 일단 에러는 하드웨어의 오동작 또는 고장으로 인한 오류를 의미하고 에러가 발생되면 프로그램을 종료한다. 또 정상 실행 상태를 돌아갈 수 없다. 예외는 사용자의 잘못된 조작된 또는 개발자의 잘못된 코딩으로 인한 오류를 의미한다. 예외가 발생되면 프로그램을 종료되고 예외 처리를 추가하면 실행 상태로 돌아 갈 수 있다. 

 

 

개발자의 프로그래밍으로 인한 에외는 예외처리를 통해 IDE에서 원활하게 코드를 돌아가게 할 수 있다. 

try 문에서 예외가 일어날 것 같은 코드를 작성하고 catch 문에서 예외를 잡고 예외처리를 한다. finally문은 예외가 있든 없든 항상 실행되는 문장이다.

 

public class ExceptionEx01 {
	public static void main(String[] args) {
		Scanner scn = new Scanner(System.in);
		
		try {
			System.out.print("X : ");			// 예외가 일어날 것 같은 코드를 try 문에 삽입
			int x = scn.nextInt();
			
			System.out.print("Y : ");
			int y = scn.nextInt();
			
			int div = x/y;
			System.out.println("div : " + div);
		}catch (ArithmeticException e) {		// 0으로 나누었을 때 생기는 예외를 잡아준다
			System.out.println("0으로 나눌 수 없습니다");
			System.out.println(e.getMessage() + "\t");
			e.printStackTrace();
		}catch (InputMismatchException e) {		// 정수가 아닌 문자를 넣었을 때 생기는 예외를 잡아준다.
			System.out.println("정수만 입력하실 수 있습니다");
			System.out.println(e.getMessage() + "\t");
		}
		
		
		scn.close();
	}
	
}

 

* 예외 떠넘기기(throws)

 

메서드에서 발생한 예외를 내부에서 처리하기가 부담스러울 때에는 throws 키워드를 사용해 예외를 상위 코드 블록으로 양도 할 수 있다. throws는 예외를 해당 블록에서 처리하지 않고 다른 코드블록으로 떠넘긴다. 예외를 찾지 못하면 프로그램은 자연종료된다.

 

public class ExceptionEx02 {
	public static void main(String[] args) {
		Scanner scn = new Scanner(System.in);
		try {
			square(scn.next());
		} catch (NumberFormatException e) {
			System.out.println("정수가 아닙니다.");
		}
	}
	
	private static void square(String s) throws NumberFormatException{		// 메서드에서 오류를 처리하지 않고 메인으로 떠넘김
		int n = Integer.parseInt(s);
		System.out.println(n);
	}
}

 

Comments