Comando finally

O bloco finally é usado junto com as construções try e catch para tratamento de exceções. O código dentro do finally será executado em qualquer caso - tanto na execução bem-sucedida do bloco try quanto na ocorrência de uma exceção.

Sintaxe

phptry {
  // Código que pode causar uma exceção
} catch (Exception $e) {
  // Tratamento da exceção
} finally {
  // Código que será executado em qualquer caso
}

Exemplo

Exemplo com execução bem-sucedida do código:

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";
}
?>

Resultado da execução do código:

phpResult: 5
This will always execute

Exemplo

Exemplo com tratamento de exceção:

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";
}
?>

Resultado da execução do código:

phpException: Division by zero
This will always execute

Exemplo

Usando finally para liberar recursos:

php<?php
$file = fopen("example.txt", "r");
try {
  // Trabalhando com o arquivo
  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";
  }
}
?>

Resultado da execução do código:

phpFile opened successfully
File closed in finally block

Veja também

  • a construção try,
    que é usada para tratamento de exceções
  • a classe Exception,
    que é a classe base para todas as exceções