CodeGym /행동 /JAVA 25 SELF /try-catch 구문

try-catch 구문

JAVA 25 SELF
레벨 11 , 레슨 2
사용 가능

1. 왜 try-catch가 필요한가?

잘 아시다시피 프로그래밍에서는 오류가 끊임없이 발생합니다. 0으로 나누기, 잘못된 입력, 파일 부재 등. 이러한 상황을 처리하지 않으면 프로그램은 오류와 함께(비정상적으로) 종료됩니다.
try-catch 구문은 예외를 “잡아” 프로그램이 중단되는 것을 막고, 오류를 깔끔하게 처리할 수 있게 해 줍니다.

try-catch 구문의 문법

try 
{
    // 예외가 발생할 수 있는 코드
} 
catch (TipIsklyucheniya imyaPeremennoy) 
{
    // 예외를 처리하는 코드
}

설명:

  • try — “이 코드를 실행해 보라(시도해 보라)”.
  • catch — “해당 타입의 예외가 발생하면 여기서 처리해라”.

어떻게 동작할까?

try 블록에서 예외가 발생하면 해당 블록의 실행은 즉시 중단되고, 제어는 첫 번째로 일치하는 catch 블록으로 넘어갑니다. 예외가 발생하지 않았다면 — catch 블록은 건너뜁니다.

2. 예시: 0으로 나누기

예외 처리가 없는 경우

int a = 10;
int b = 0;
int result = a / b; // 여기서 프로그램이 오류로 종료됩니다!
System.out.println("결과: " + result); // 여기까지는 실행되지 않습니다

결과:

Exception in thread "main" java.lang.ArithmeticException: / by zero
    at Main.main(Main.java:3)

try-catch로 처리한 경우

int a = 10;
int b = 0;

try 
{
    int result = a / b; // 여기서 예외가 발생할 수 있습니다
    System.out.println("결과: " + result);
} 
catch (ArithmeticException e) 
{
    System.out.println("오류: 0으로 나눌 수 없습니다!");
}

System.out.println("프로그램이 계속 실행되었습니다.");

결과:

오류: 0으로 나눌 수 없습니다!
프로그램이 계속 실행되었습니다.

설명:

  1. Java가 0으로 나누는 연산을 만나면 즉시 예외를 “던집니다”.
  2. try가 중단되고, 제어가 catch로 넘어갑니다.
  3. 오류를 처리한 뒤 프로그램은 계속 실행됩니다.

3. catch 블록은 어떻게 동작하나

catch 뒤의 괄호에는 예외 타입(예: ArithmeticException)과 변수 이름(보통 e)을 지정합니다.

catch 블록 내부에서는 오류에 대한 세부 정보를 확인할 수 있습니다:

  • e.getMessage() — 오류의 간단한 설명.
  • e.printStackTrace() — 상세 정보(디버깅용).

예시:

try 
{
    int[] arr = new int[2];
    int x = arr[10]; // 오류: 해당 인덱스가 없습니다
} 
catch (ArrayIndexOutOfBoundsException e) 
{
    System.out.println("오류: " + e.getMessage()); // 오류 메시지를 출력
    e.printStackTrace();                             // 오류에 대한 모든 정보를 콘솔에 출력
}

4. 예외 발생 시 실행 흐름

try 블록에 오류가 없다면catch 블록은 실행되지 않습니다.

try 블록에서 오류가 발생하면 — 오류 지점에서 블록의 실행이 중단되고, 제어는 즉시 첫 번째로 일치하는 catch로 넘어갑니다. try에서 오류 이후의 코드는 더 이상 실행되지 않습니다!

도식:

try 
{
    System.out.println("1. try 시작");
    int a = 10 / 0;                        // 오류!
    System.out.println("2. 나눗셈 이후"); // 실행되지 않음
} 
catch (ArithmeticException e) 
{
    System.out.println("3. catch 블록에서");
}
System.out.println("4. try-catch 이후");

결과:

1. try 시작
3. catch 블록에서
4. try-catch 이후

5. try-catch 사용 시 흔한 실수

오류 1: 너무 광범위한 catch.
catch (Exception e)를 사용하면, 제대로 처리할 수 없는 예상치 못한 오류들까지 죄다 잡아버릴 수 있습니다.
해결: 이 지점에서 실제로 예상되는 예외만 잡으세요(예: IOException, SQLException).

오류 2: 빈 catch.
catch (Exception e) {}처럼 작성하는 것은 문제를 숨기는 것입니다. 프로그램이 다른 곳에서 죽거나 이상하게 동작할 수 있습니다.
해결: 최소한 오류를 기록하세요(e.printStackTrace() 또는 로거).

오류 3: try-catch가 모든 문제를 해결해 준다고 믿는 것.
프로그램 로직의 오류라면(예: 0으로 나누기, 잘못된 알고리즘) — 어떤 try-catch도 도움이 되지 않습니다.
해결: 버그를 감추기 위해서가 아니라 실제로 예상되는 상황에 대해서만 try-catch를 사용하세요.

1
과제
JAVA 25 SELF, 레벨 11, 레슨 2
잠금
신뢰할 수 있는 탐사 로봇 🤖
신뢰할 수 있는 탐사 로봇 🤖
1
과제
JAVA 25 SELF, 레벨 11, 레슨 2
잠금
영웅의 배낭에 대한 잘못된 요청 🛡️
영웅의 배낭에 대한 잘못된 요청 🛡️
1
과제
JAVA 25 SELF, 레벨 11, 레슨 2
잠금
계산 시스템 문제 진단 📈
계산 시스템 문제 진단 📈
1
과제
JAVA 25 SELF, 레벨 11, 레슨 2
잠금
중요 미션 관리 시스템 🚀
중요 미션 관리 시스템 🚀
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION