Menu
Coddy logo textTech

'finally' 블록

Coddy PHP 여정의 논리 & 흐름 섹션에 포함된 레슨 — 68개 중 54번째.

때때로 예외 발생 여부와 상관없이 실행되어야 하는 코드가 필요할 때가 있습니다. finally 블록은 이러한 보장을 제공합니다. 이 블록은 try...catch 블록이 완료된 후 항상 실행되는 코드를 포함하므로, 파일 닫기나 데이터베이스 연결 종료와 같은 정리 작업에 적합합니다.

finally 블록은 모든 시나리오에서 실행됩니다: try 블록이 예외 없이 성공할 때, 예외가 발생하여 처리될 때, 그리고 예외가 발생했지만 처리되지 않았을 때도 포함됩니다. 이러한 신뢰성 덕분에 중요한 정리(cleanup) 코드가 항상 실행되도록 보장하는 데 매우 유용합니다.

<?php
try {
    echo "Attempting operation...\n";
    // 예외를 발생시킬 수 있는 코드
} catch (Exception $e) {
    echo "Error: " . $e->getMessage() . "\n";
} finally {
    echo "Cleanup completed.\n";
}
?>

finally 블록은 trycatch 블록이 모두 완료된 후에 실행되며, 필수적인 정리 코드를 위한 일관된 장소를 제공합니다. 이는 실행 중에 어떤 일이 발생하더라도 스크립트가 리소스를 적절하게 처리하고 깨끗한 상태를 유지하도록 보장합니다.

quiz icon실력 점검

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

quiz icon실력 점검

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

quiz icon실력 점검

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

challenge icon

챌린지

쉬움

두 개의 입력값인 연산 유형과 숫자를 받게 됩니다. 첫 번째 입력은 "divide" 또는 "multiply" 중 하나인 문자열입니다. 두 번째 입력은 연산에 사용될 숫자입니다.

두 입력을 읽고 try...catch...finally 블록을 생성하세요. try 블록 내부에서 연산 유형을 확인합니다:

  • 연산이 "divide"인 경우, 숫자가 0인지 확인합니다. 0이라면 "Cannot divide by zero"라는 메시지와 함께 새로운 Exception을 던지세요. 숫자가 0이 아니라면, 100을 해당 숫자로 나눈 값을 계산하고 "Result: " 뒤에 결과값을 출력합니다.
  • 연산이 "multiply"인 경우, 100에 해당 숫자를 곱한 값을 계산하고 "Result: " 뒤에 결과값을 출력합니다.

catch 블록에서는 getMessage() 메서드를 사용하여 "Error: " 뒤에 예외 메시지를 출력함으로써 모든 예외를 처리합니다.

finally 블록에서는 "Operation completed"를 출력합니다.

입력 형식:

  • 첫 번째 줄: 연산 유형 문자열 (divide 또는 multiply)
  • 두 번째 줄: 숫자 (예: 5 또는 0 또는 2.5)

예상 출력:

  • 연산에 성공한 경우: Result: 뒤에 계산된 값, 그 다음 줄에 Operation completed
  • 0으로 나누기가 발생한 경우: Error: Cannot divide by zero, 그 다음 줄에 Operation completed

치트 시트

finally 블록은 예외 발생 여부와 관계없이 try...catch 블록이 완료된 후 항상 실행되는 코드를 포함합니다. 파일 닫기나 데이터베이스 연결과 같은 정리 작업에 적합합니다.

finally 블록은 모든 시나리오에서 실행됩니다:

  • try 블록이 예외 없이 성공할 때
  • 예외가 발생하여 catch될 때
  • 예외가 발생했지만 catch되지 않을 때
<?php
try {
    echo "Attempting operation...\n";
    // Code that might throw an exception
} catch (Exception $e) {
    echo "Error: " . $e->getMessage() . "\n";
} finally {
    echo "Cleanup completed.\n";
}
?>

finally 블록은 trycatch 블록이 모두 종료된 후에 실행되어, 필수적인 정리 코드가 항상 실행되도록 보장합니다.

직접 해보기

<?php
// 입력 읽기
$operation = trim(fgets(STDIN));
$number = floatval(fgets(STDIN));

// TODO: 아래에 코드를 작성하세요
// 연산을 처리하기 위해 try...catch...finally 블록을 생성하세요

?>
quiz icon실력 점검

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

논리 & 흐름의 모든 레슨