PHP Error Handling: Exceptions, Try/Catch, and Custom Error Classes

Sloppy PHP error handling is how a single bad API response takes down an entire checkout flow. Exceptions give you a structured way to fail loudly in development and gracefully in production.

Basic Try/Catch

try {
    $result = 10 / $divisor;
    if ($divisor === 0) {
        throw new InvalidArgumentException("Divisor cannot be zero");
    }
} catch (InvalidArgumentException $e) {
    error_log($e->getMessage());
    http_response_code(400);
} finally {
    // always runs, even after a return or exception
    echo "Request processed\n";
}

Custom Exception Classes

Extend Exception to create domain-specific error types (PaymentDeclinedException, UserNotFoundException) so calling code can catch precisely what it expects instead of swallowing every possible failure with one generic catch (Exception $e).