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