7

ユーザーが有効なセッション情報を持っているかどうかを確認するメソッドがあります。これは例外をスローするはずですGuzzle\Http\Exception\BadResponseExceptionが、キャッチしようとすると:

catch (Guzzle\Http\Exception\BadResponseException $e) 
{
    return false;
} 
return true

Laravel はこのコードに到達せず、すぐに独自のエラー処理を開始します。また、Laravels 独自の実装をバイパスし、独自の Catch を使用する方法についてのアイデア。

編集: Laravel が Symfony と同じ例外ハンドラーを使用していることがわかったので、Symfony2 タグも追加しました。

編集2:

Guzzleの例外を無効にし、戻りヘッダーを手動でチェックすることで、問題を修正しました。少し近道ですが、この場合はうまくいきます。回答ありがとうございます。

4

3 に答える 3

9

実際、この例外は Laravel でキャッチできます。名前空間を尊重 (および理解) する必要があります。

あなたが持っている場合

namespace App;

あなたがやる

catch (Guzzle\Http\Exception\BadResponseException $e) 

PHPは、あなたがしようとしていることを理解しています

catch (\App\Guzzle\Http\Exception\BadResponseException $e) 

したがって、これを機能させるには、ルート スラッシュが必要です。

catch (\Guzzle\Http\Exception\BadResponseException $e) 

そしてそれはうまくいくでしょう。

于 2014-02-17T13:06:58.297 に答える
2

コードの代わりに

catch (Guzzle\Http\Exception\BadResponseException $e) 
{
   return false;
} 
return true

このソリューションを使用する

catch (\Exception $e) 
{
   return false;
} 
return true

Guzzle によってスローされる可能性のあるすべての例外をキャッチします。

BadResponseExceptionを明示的にキャッチしたい場合は、例外のクラス名前空間の前に'\'を追加することもできます。

catch (\Guzzle\Http\Exception\BadResponseException $e) 
{
   return false;
} 
return true
于 2016-02-26T11:01:43.683 に答える