🎬 상상해봐
너는 게임 캐릭터를 다루는 프로그램을 만들고 있어.
사용자가 잘못된 입력을 했을 때, 프로그램이 멈추지 않고 오류를 처리할 수 있어야 해.
그럼 예외 처리를 사용하면, 에러를 안전하게 처리하고, 프로그램이 중단되지 않도록 만들 수 있어!
⚠️ 1. 예외란 무엇인가?
예외는 프로그램 실행 중 발생할 수 있는 오류야.
예를 들어, 사용자가 잘못된 입력을 했거나, 파일이 존재하지 않는 경우 등에서 예외가 발생할 수 있어.
이때 예외 처리를 하면, 프로그램이 갑자기 종료되지 않게 할 수 있어!
public class Main {
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]); // 예외 발생! 배열의 범위를 넘었어!
}
}
위 코드는 배열의 범위를 넘어서 접근하려 했기 때문에 배열 인덱스 초과 예외가 발생해.
이때 예외 처리를 사용하면 프로그램이 중단되지 않고 계속 진행할 수 있어!
🛠️ 2. 예외 처리 – try-catch 사용법
예외 처리를 하려면 try-catch 블록을 사용해.
try 블록 안에 예외가 발생할 수 있는 코드를 넣고,
catch 블록에서 예외가 발생했을 때의 처리 방법을 정의하는 거야.
public class Main {
public static void main(String[] args) {
try {
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]); // 예외 발생!
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("배열의 범위를 초과했습니다!");
}
}
}
try 블록 안에서 예외가 발생하면, 해당 예외는 catch 블록으로 넘어가서 처리돼.
이렇게 하면 프로그램이 중단되지 않고 예외를 처리할 수 있어!
🔄 3. 예외 클래스 – 다양한 예외 처리
catch 블록에서는 발생할 수 있는 여러 종류의 예외를 처리할 수 있어.
예를 들어, 배열 인덱스 초과 예외나 숫자 형변환 예외 등을 각각 다르게 처리할 수 있어!
public class Main {
public static void main(String[] args) {
try {
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]); // 예외 발생!
int num = Integer.parseInt("ABC"); // 예외 발생!
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("배열의 범위를 초과했습니다!");
} catch (NumberFormatException e) {
System.out.println("숫자 형식이 잘못되었습니다!");
}
}
}
catch 블록에서 예외 타입을 다르게 지정하면, 발생한 예외에 맞는 처리를 할 수 있어!
예를 들어, 배열 인덱스 초과 예외와 숫자 형식 예외를 각각 처리할 수 있지!
🧠 4. 예외 처리의 중요성
- 안정적인 프로그램: 예외를 처리하면 프로그램이 예상치 못한 오류로 중단되지 않아.
- 에러 메시지 출력: 예외가 발생했을 때, 어떤 오류가 발생했는지 메시지로 알리기 때문에, 문제를 더 쉽게 찾을 수 있어.
- 유저 경험 개선: 프로그램이 갑자기 멈추지 않고 우아하게 오류를 처리하면 사용자가 불편함을 덜 느끼게 돼!
🔧 5. 예외 던지기 (throw)
때로는 예외를 강제로 발생시켜야 할 때도 있어.
이때는 throw를 사용해 예외를 던져줄 수 있어.
public class Main {
public static void main(String[] args) {
try {
checkAge(15);
} catch (IllegalArgumentException e) {
System.out.println("나이가 너무 어립니다!");
}
}
public static void checkAge(int age) {
if (age < 18) {
throw new IllegalArgumentException("나이가 18세 이상이어야 합니다.");
} else {
System.out.println("나이는 적당합니다.");
}
}
}
위 코드는 checkAge 메서드에서 나이가 18세 미만이면 throw로 예외를 던져서 처리하게 돼.
이렇게 하면 특정 조건에 맞지 않을 때 예외를 던져 프로그램 흐름을 제어할 수 있어!
🧩 6. 예외 전파하기 (throws)
메서드에서 발생한 예외를 그 메서드를 호출한 곳으로 넘기기 위해서는 throws 키워드를 사용해.
public class Main {
public static void main(String[] args) throws Exception {
readFile("non_existent_file.txt");
}
public static void readFile(String fileName) throws Exception {
// 파일을 읽는 과정에서 예외가 발생할 수 있어
throw new Exception("파일을 찾을 수 없습니다!");
}
}
throws는 예외가 발생할 가능성이 있는 메서드에 사용해.
이 예외는 메서드를 호출한 곳으로 전파되며, 그곳에서 처리해야 해.
🧠 정리 타임
예외 처리 | 프로그램에서 발생할 수 있는 오류를 처리하는 기술 | try-catch 블록 사용 |
try-catch | 예외가 발생할 수 있는 코드를 try에 넣고, 예외를 catch에서 처리 | catch (ArrayIndexOutOfBoundsException e) |
throw | 예외를 강제로 던질 때 사용 | throw new IllegalArgumentException() |
throws | 메서드에서 발생한 예외를 호출한 곳으로 전파 | public void readFile(String fileName) throws Exception |
🎮 실전 미션 – 예외 처리로 안전한 계산기 만들기
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
try {
Scanner scanner = new Scanner(System.in);
System.out.print("숫자를 입력하세요: ");
int num1 = Integer.parseInt(scanner.nextLine());
System.out.print("나눌 숫자를 입력하세요: ");
int num2 = Integer.parseInt(scanner.nextLine());
System.out.println("결과: " + (num1 / num2));
} catch (ArithmeticException e) {
System.out.println("0으로 나눌 수 없습니다!");
} catch (NumberFormatException e) {
System.out.println("숫자만 입력해주세요!");
} catch (Exception e) {
System.out.println("알 수 없는 오류가 발생했습니다!");
}
}
}
✨ 마무리 요약
예외 처리를 사용하면, 오류가 발생할 때 프로그램이 중단되지 않고 우아하게 처리할 수 있어.
이제 프로그램에서 발생할 수 있는 예외적인 상황을 안전하게 처리할 수 있게 되었어!
예외 처리를 배우고 나면, 더 이상 오류로 인한 충돌을 두려워할 필요가 없어!
다음에는 더 많은 예외 처리 기법을 다루면서, 프로그램의 안전성을 높여보자!
'IT > java 코딩 기초' 카테고리의 다른 글
1️⃣4️⃣ 파일 입출력 – 데이터를 파일로 다루는 법! 💾📄 (1) | 2025.04.14 |
---|---|
1️⃣2️⃣ 다형성 – 하나의 객체, 여러 형태로 변하다! 🌈✨ (0) | 2025.04.14 |
1️⃣1️⃣ 인터페이스 – 행동의 규칙을 정의하자! 🔑💡 (0) | 2025.04.14 |
🔟 상속 – 새로운 능력을 추가하자! 🦸♂️💥 (0) | 2025.04.14 |
9️⃣ 생성자 – 객체 탄생의 순간을 다루는 마법! 🎩✨ (0) | 2025.04.14 |