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
try {
// 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
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:
Result: 5
This will always execute
Exemplo
Exemplo com tratamento de exceção:
<?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:
Exception: Division by zero
This will always execute
Exemplo
Usando finally para liberar recursos:
<?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:
File opened successfully
File closed in finally block