Lệnh finally

Khối finally được sử dụng cùng với các cấu trúc try và catch để xử lý ngoại lệ. Mã bên trong finally sẽ luôn được thực thi - dù khối try thực hiện thành công hay có ngoại lệ xảy ra.

Cú pháp

phptry {
  // Mã có thể gây ra ngoại lệ
} catch (Exception $e) {
  // Xử lý ngoại lệ
} finally {
  // Mã sẽ luôn được thực thi
}

Ví dụ

Ví dụ với việc thực thi mã thành công:

php<?php
try {
  $res = 10 / 2;
  echo "Result: " . $res . "\n";
} catch (Exception $e) {
  echo "Exception: " . $e->getMessage() . "\n";
} finally {
  echo "This will always execute\n";
}
?>

Kết quả thực thi mã:

phpResult: 5
This will always execute

Ví dụ

Ví dụ với việc xử lý ngoại lệ:

php<?php
try {
  $res = 10 / 0;
  echo "Result: " . $res . "\n";
} catch (Exception $e) {
  echo "Exception: " . $e->getMessage() . "\n";
} finally {
  echo "This will always execute\n";
}
?>

Kết quả thực thi mã:

phpException: Division by zero
This will always execute

Ví dụ

Sử dụng finally để giải phóng tài nguyên:

php<?php
$file = fopen("example.txt", "r");
try {
  // Làm việc với file
  if ($file) {
    echo "File opened successfully\n";
  }
} catch (Exception $e) {
  echo "Exception: " . $e->getMessage() . "\n";
} finally {
  if ($file) {
    fclose($file);
    echo "File closed in finally block\n";
  }
}
?>

Kết quả thực thi mã:

phpFile opened successfully
File closed in finally block

Xem thêm

  • cấu trúc try,
    được sử dụng để xử lý ngoại lệ
  • lớp Exception,
    là lớp cơ sở cho tất cả các ngoại lệ