User Tools

Site Tools


mental_model:error_handling

7. Error Handling — Exceptions, Types, and Failure Modes

Why this matters

Error handling is where PHP reveals its maturity.
Modern PHP expects:

  • typed arguments
    rejecting invalid input early
  • typed returns
    guaranteeing what comes back
  • predictable exceptions
    failures that are explicit, not hidden
  • explicit failure modes
    no silent “false” or “null” surprises

AI often mixes old and new patterns, or generates code that hides errors instead of surfacing them.
This page gives us the mental model to recognize what “good” PHP error handling looks like.


1. PHP used to hide errors — modern PHP does not

Older PHP code often relied on:

  • silent failures
    functions returning false without explanation
  • false returns
    mixing success and failure in the same type
  • warnings instead of exceptions
    errors that don’t stop execution
  • error suppression (@)
    hiding problems instead of fixing them

Modern PHP is the opposite:

  • strict types
    invalid input becomes an error, not a guess
  • exceptions
    failures stop execution and bubble up
  • explicit failure handling
    clear, predictable control flow

If AI generates code using old patterns, our mental model will flag it immediately.


2. Types are the first line of defense

PHP 7+ introduced real type safety:

function load(int $id): User { ... }

Types help you:

  • catch mistakes early
    before the logic even runs
  • document intent
    making the contract visible
  • prevent invalid states
    the core of modern architecture
  • simplify error handling
    fewer branches, fewer surprises

AI sometimes omits types or mixes nullable and non‑nullable types incorrectly.
Our understanding helps us correct that.


3. Exceptions are the modern failure mode

Instead of returning false or null, modern PHP throws exceptions:

throw new InvalidArgumentException("ID must be positive.");

And exceptions:

  • stop execution
    preventing corrupted state
  • bubble up the call stack
    letting higher layers decide what to do
  • allow centralized handling
    one place to log, respond, or recover
  • make failure explicit
    no ambiguity, no hidden branches

This is one of the clearest signs of modern PHP.


4. Use specific exceptions, not generic ones

Good PHP code uses domain‑specific exceptions:

class UserNotFound extends RuntimeException {}

And this allows for:

  • precise error handling
    catching only what we intend
  • clearer debugging
    the exception name tells the story
  • better architecture
    errors become part of the domain language

AI often uses Exception everywhere.
Our mental model helps us refine that.


5. Avoid suppressing errors

The @ operator hides problems:

$result = @file_get_contents($path);

This is almost always a mistake.
Modern PHP expects you to handle errors, not hide them.


6. Centralized error handling

Frameworks and modern apps often have:

  • a global exception handler
    one place to catch everything
  • a logging layer
    consistent visibility into failures
  • a consistent error response
    predictable behavior for clients

This keeps the codebase clean, stable, and easy to reason about.


Summary

Modern PHP error handling is:

  • typed. explicit, exception‑driven, predictable, centralized

Once you internalize this, you can instantly see when AI‑generated code is living in the wrong era.


mental_model/error_handling.txt · Last modified: by editor