Laravel попробуй поймать не работает, не могу поймать исключение из пакета

Я использую посылку https://github.com/barbushin/php-imap чтобы прочитать электронную почту с почтового сервера, у меня есть следующий код

$folder = Storage::disk('local')->getAdapter()->getPathPrefix();
try {
$mailbox = new \PhpImap\Mailbox('{imap.gmail.com:993/imap/ssl}INBOX', '[email protected]', 'xxxxxxxxxx', $folder);
}
catch(\Exception $e) {
return 'rroor';
}

но не ловит ошибку, я хочу зарегистрировать ошибку, если вход не удался.

Следующий код вызывает исключение

if(!$result) {
$errors = imap_errors();
if($errors) {
if($throwExceptionClass) {
throw new $throwExceptionClass("IMAP method imap_$methodShortName() failed with error: " . implode('. ', $errors));
}
else {
return false;
}
}
}

Как я могу поймать это исключение на моем методе контроллера?

см страницу ошибки

введите описание изображения здесь

0

Решение

У вас есть только конструктор класса в try … catch. Я посмотрел на репозиторий, и он, кажется, не выбрасывает это исключение из конструктора. https://github.com/barbushin/php-imap/blob/master/src/PhpImap/Mailbox.php#L33

Есть ли еще в вашем коде, который может вызывать эту часть кода https://github.com/barbushin/php-imap/blob/master/src/PhpImap/Mailbox.php#L148?

Я думаю, вам нужно добавить больше кода в попытку … поймать, чего не хватает в вашем примере.

2

Другие решения

try {
$folder = Storage::disk('local')->getAdapter()->getPathPrefix();
$mailbox = new \PhpImap\Mailbox('{imap.gmail.com:993/imap/ssl}INBOX',
'[email protected]', 'xxxxxxxxxx', $folder);
}
catch(\Throwable $e) {
return 'error';
}
0

Попробуй это:

use PhpImap\ConnectionException;

//....

$folder = Storage::disk('local')->getAdapter()->getPathPrefix();
try {
$mailbox = new \PhpImap\Mailbox('{imap.gmail.com:993/imap/ssl}INBOX', '[email protected]', 'xxxxxxxxxx', $folder);
}
catch(ConnectionException $e) {
return 'rroor';
}

Или отредактируйте свое приложение \ Исключения \ Обработчик;

public function render($request, Exception $exception)
{
if ($exception instanceof \PhpImap\ConnectionException\ConnectionException) {
//add log
return 'error';
}
return parent::render($request, $exception);
}
0
По вопросам рекламы [email protected]