
예외?(Exception)
자바에서 실행 중 발생하는 예기치 않은 상황으로, 프로그램 실행을 중단 시킬 수 있습니다.
How to fix? try-catch문을 사용해서!
- try-catch문 구조
try { // 예외 발생 가능성이 있는 코드 } catch (예외 타입1 예외 변수1) { // 예외 처리 코드 } catch (예외 타입2 예외 변수2) { // 예외 처리 코드 } finally { // 항상 실행되는 코드 (생략 가능) }try블록 내에서 예외가 발생하면 예외타입이 있는 catch블록에서 예외처리코드가 실행됩니다! finally블록은 예외 상관없이 항상 실행됩니다. finally블록은 생략가능합니다.
- 좀 더 쉬운 예시
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("물건의 가격을 입력하세요: "); try { int price = scanner.nextInt(); if (price < 0) { throw new IllegalArgumentException("가격은 음수가 될 수 없습니다."); } System.out.println("구매 가능합니다."); } catch (IllegalArgumentException e) { System.out.println("오류: " + e.getMessage()); } catch (Exception e) { System.out.println("오류: 잘못된 입력입니다."); } } }위코드에서 try-catch문은
1. try 블록 안에 있는 것을 먼저 실행시킵니다.
2. if 문에서 price < 0 인지 아닌지 걸러내게 됩니다.
(price가 -10000 이게 되면 IllegalArgumentException 예외가 발생하여 catch 한 뒤 System.out.println("오류: " + e.getMessage()); 메시지가 출력될 거예요)
(다른 예외 일 경우에는 catch (Exception e) 여기 코드가 실행돼서
System.out.println("오류: 잘못된 입력입니다.");이 뜰 거예요 예를 들어 int라서 숫자를 입력해야 하는데 문자를 입력했거나, int형의 범위를 넘어섰을 때 표에 범위대로 만약 가격을 int형의 범위보다 1벗어난 2147483648이라고 쳐도 잡아낼거에요!!