Advanced PHP · Lesson 3 of 10
Exceptions
Throw exceptions for failures and catch them at a meaningful boundary.
Lesson
Exceptions carry failure information up the call stack until a matching catch handles them. Catch only exceptions you can meaningfully recover from or translate; swallowing every Throwable hides defects. Use finally for cleanup that must happen whether an operation succeeds or fails.
A custom exception can communicate a domain-specific failure to its caller.
Further guidance
Make failure behavior explicit at system boundaries: validate decoded data, handle expected exceptions, and log diagnostics without exposing them to visitors. Keep dependencies locked and current, use a consistent namespace/autoloading scheme, and test error paths as well as successful responses.
Practice task: Create a fresh example for Exceptions. Predict the result before running it, then change one input and explain why the result changes. Test a normal case and one boundary or invalid case where it applies. Compare your output with the example and note one rule you would use in a real project.
Code examples
Exceptions
PHP
try {
throw new DomainException('Order is already closed');
} catch (DomainException $exception) {
echo 'Cannot update this order.';
}
Expected output
Cannot update this order.
Key points
- Throw exceptions for failures and catch them at a meaningful boundary.
- Handle expected errors explicitly without exposing diagnostics.
- Keep dependency and runtime configuration reproducible.
Your learning progress
Finish this lesson
Optional practice
PHP playground
This site does not execute learner-provided PHP code. Connect a secured PHP sandbox service before enabling code execution.
Execution is disabled. No code is sent to a server.