An exception interface that provides a friendly name and a possible solution. Error handlers may consider the interface to render additional information right at the error screen.
To make exception friendly require this package and implement FriendlyExceptionInterface
:
<?php
declare(strict_types=1);
use Yiisoft\FriendlyException\FriendlyExceptionInterface;
class RequestTimeoutException extends \RuntimeException implements FriendlyExceptionInterface
{
public function getName(): string
{
return 'Request timed out';
}
public function getSolution(): ?string
{
return <<<'SOLUTION'
Likely it is a result of resource request is not responding in a timely fashion. Try increasing timeout.
SOLUTION;
}
}
When returning solution consider the following best practices:
- Make solution description as short as possible.
- Do not use HTML tags.
- A simple markdown is OK but its support is up to implementation.
To make your exception handler render friendly exceptions:
use Yiisoft\FriendlyException\FriendlyExceptionInterface;
class ThrowableHandler
{
public function handle(\Throwable $t)
{
if ($t instanceof FriendlyExceptionInterface) {
// additional handling
}
// regular handling
}
}