Menu
CoddyTech

Finally 블록

Coddy Java 여정의 논리와 흐름 섹션에 포함된 레슨. 59개 중 41번째.

finally 블록에는 try-catch 블록이 끝난 후 예외 발생 여부와 관계없이 실행되는 코드가 포함됩니다. 일반적으로 파일이나 데이터베이스 연결을 닫는 것과 같은 정리 작업에 사용됩니다.

다음은 try-catch-finally 블록의 기본 구조입니다:

try {
   // 예외를 발생시킬 수 있는 코드
} catch (ExceptionType e) {
   // 예외를 처리하는 코드
} finally {
   // 항상 실행되는 코드
}

카운터를 사용한 예제를 살펴봅시다:

int counter = 0;
try {
   int result = 10 / 0;
   // 이것은 예외를 발생시킵니다
   counter = 1;
} catch (ArithmeticException e) {
   counter = 2;
} finally {
   counter = 3;
   // 이것은 항상 실행됩니다
}

위 코드를 실행한 후 counter에는 다음이 포함됩니다:

3

catch 괄호 안의 타입은 해당 블록이 처리할 오류를 결정합니다. 흔히 사용되는 두 가지는 정수를 0으로 나눌 때 발생하는 ArithmeticException과 텍스트가 숫자가 아닐 때 Integer.parseInt()에 의해 발생하는 NumberFormatException입니다. 하나의 catch로 여러 타입을 한 번에 처리할 수 있습니다:

try {
   int value = Integer.parseInt(text);
   int result = 10 / value;
} catch (ArithmeticException | NumberFormatException e) {
   // 둘 다 처리합니다
} finally {
   // 항상 실행됩니다
}

대신 Exception을 잡으면 범위가 더 넓어집니다. 두 예외와 그 밖의 모든 예외를 처리합니다.

challenge icon

챌린지

쉬움

processNumber라는 이름의 메서드를 만들고 다음 두 인수를 받도록 하세요:

  1. 정수로 변환할 String(number)
  2. 예외를 발생시킬지 결정하는 boolean(shouldThrow)

메서드는 다음과 같이 동작해야 합니다:

  1. 결과 변수를 0으로 초기화합니다.
  2. try 블록에서:
    • shouldThrow가 true이면 10을 0으로 나눕니다.
    • 그렇지 않으면 number 문자열을 정수로 변환하여 result에 저장합니다.
  3. catch 블록에서 result를 -1로 설정합니다.
  4. finally 블록에서 result에 100을 더합니다.
  5. result를 문자열로 반환합니다.

직접 해보기

import java.util.Scanner;

public class Main {
    public static String processNumber(String number, boolean shouldThrow) {
        // 여기에 코드를 작성하세요
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String number = scanner.nextLine();
        boolean shouldThrow = Boolean.parseBoolean(scanner.nextLine());
        
        System.out.println(processNumber(number, shouldThrow));
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리와 흐름의 모든 레슨

직접 연습해 보세요: 온라인 Java 컴파일러