How to Use Try Catch Finally in PHP

Exception handling in PHP is a critical practice for managing runtime errors and unexpected behavior gracefully. This article provides a straightforward guide on how to implement try, catch, and finally blocks in PHP to handle exceptions, prevent application crashes, and ensure clean resource management.

The Try Block

The try block contains the code that might throw an exception during execution. If an error or an exceptional event occurs within this block, the execution of the normal code flow stops immediately, and PHP searches for a matching catch block.

The Catch Block

The catch block defines how your application responds to a specific exception thrown from the try block. It intercepts the exception object, allowing you to log the error, display a user-friendly message, or run fallback logic. You can use multiple catch blocks to handle different types of exceptions uniquely.

The Finally Block

The finally block contains code that will always execute after the try and catch blocks, regardless of whether an exception was thrown or caught. This is highly useful for cleanup operations, such as closing database connections, freeing up system resources, or closing open file handles.

Code Example

Below is a practical example demonstrating how these three blocks work together in PHP:

<?php
function divide($dividend, $divisor) {
    if ($divisor === 0) {
        throw new Exception("Division by zero error.");
    }
    return $dividend / $divisor;
}

try {
    // Code that may throw an exception
    echo divide(10, 0);
} catch (Exception $e) {
    // Code that runs if an exception is thrown
    echo "Caught exception: " . $e->getMessage() . "\n";
} finally {
    // Code that always runs
    echo "Execution of the division attempt is complete.\n";
}
?>

Best Practices