You can customize how your exceptions are rendered by adding a 'render' method to your exception.
For example, this allows you to return JSON instead of a Blade view when the request expects JSON.
abstract class BaseException extends Exception{ public function render(Request $request) { if ($request->expectsJson()) { return response()->json([ 'meta' => [ 'valid' => false, 'status' => static::ID, 'message' => $this->getMessage(), ], ], $this->getCode()); } return response()->view('errors.' . $this->getCode(), ['exception' => $this], $this->getCode()); }}
class LicenseExpiredException extends BaseException{ public const ID = 'EXPIRED'; protected $code = 401; protected $message = 'Given license has expired.'}
Tip given by @Philo01
Enjoyed This Tip?
Get access to all premium tutorials, video and text courses, and exclusive Laravel resources. Join our community of 10,000+ developers.
Recent Courses on Laravel Daily
AI Agents/IDEs for Laravel: May 2026 (Claude Code, Codex, OpenCode, etc)
7 lessons
52 min
Laravel 13 Starter Kit Teams and Customizations
10 lessons
33 min
How to Build Laravel 13 API From Scratch
30 lessons
1 h 23 min