Notice
Recent Posts
Recent Comments
Link
관리 메뉴

데브마우스

[Java] 예외 처리(try-catch-finally) 정리 본문

Java/Java: 문법 정리

[Java] 예외 처리(try-catch-finally) 정리

데브마우스 2024. 1. 13. 19:57

예외(Exception)는 무엇인가요?

만약 사용자로부터 나이를 숫자로 입력받으려는데 한글로 '열아홉살'이라고 입력했다면 어떨까요?

데이터 타입은 int 타입으로 선언되었지만 입력된 값은 문자열입니다. 이처럼 예상치 못한 상황에서 예외가 발생합니다.

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("나이를 입력해주세요 : ");
		
		int age = sc.nextInt();
		System.out.println("age : " + age);
		
//		나이를 입력해주세요 : 
//			열아홉살
//			Exception in thread "main" java.util.InputMismatchException
//				at java.base/java.util.Scanner.throwFor(Scanner.java:939)
//				at java.base/java.util.Scanner.next(Scanner.java:1594)
//				at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
//				at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
//				at Main.main(Main.java:8)
	}
}

 

자바 프로그램은 프로그램 시작될 때 예외 객체가 함께 생성되어서 예외 발생 시 발생한 예외를 출력합니다.

 

 

 

예외 처리(Exception Handling)는 무엇인가요?

예외가 발생하였을 때 어떻게 프로그램이 작동되게 할 것인지 처리합니다. 그리하여 프로그램이 비정상적으로 종료되는걸 막는 것입니다.

 

try-catch

try 안에는 예외가 발생할 수 있는 코드를 작성합니다.

catch안에는 예외 발생 시 실행할 코드를 작성합니다.

 

try-catch-finally

finally 구문은 예외 발생 여부 상관없이 실행됩니다. 그렇기에 finally는 주로 통신처럼 외부와 연결하는 부분을 종료하는 작업에 주로 사용됩니다.

 

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

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("나이를 입력해주세요 : ");
		try {
		int age = sc.nextInt();
		System.out.println("age : " + age);
		} catch(InputMismatchException e) {
			System.out.println("숫자로 입력해주세요. 예시) 19");
		} finally {
			System.out.println("예외 여부와 관계없이 실행됩니다.");
		}
	}
}