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("예외 여부와 관계없이 실행됩니다.");
}
}
}