2017-02-03 11 views
0

例外がHandler.phpLaravelの特定のプロパティで例外を汎用的に処理する方法はありますか?

\ \私は

アプリでunauthenticated()機能に似たものを作成したいと思います。しかし、私の例外は、一つは、特定のHTTPコードとJSON体を含むがつがつ食うによって生成されます。

私はすでに、このように動作しますヘルパークラスがあります。

public static function get($enum) { 
     $headers = self::headers(); 
     $client = new Client(); 
     try { 
      $response = $client->request('GET', config('app.apiurl') . '/api/' . $enum, ['headers' => $headers]); 
     } catch (\Exception $e) { 
      $response = $e->getResponse(); 
      $body = json_decode($response->getBody(), true); 
      $code = $response->getStatusCode(); 

      if ($body['code'] == 101 && $code == 412) { 
       throw new \Exception("wizard eerst", 101); 
      } 
     } 

をしかし、私は、例外のためのミドルウェアのいくつかの種類のような普遍的なハンドラでこれを行うことを好みます。だから私は試してみて、すべての呼び出しをキャッチを使用したいと思いますが、私の説明に合ったすべての例外をキャッチし、リダイレクトでそれらを処理します。

ソリューション

public function render($request, Exception $exception) { 

$response = $exception->getResponse(); 
$body = json_decode($response->getBody(), true); 
$code = $response->getStatusCode(); 

if ($body['code'] == 101 && $code == 412) { 
    if ($request->expectsJson()) { 
     return response()->json(['error' => 'Je moet eerst de profielwizard afmaken'], $code); 
    } 

    return redirect('/wizard'); 
} 

return parent::render($request, $exception); 
} 
+0

可能な重複(http://stackoverflow.com/questions/17658283/catching-exceptions-from-をguzz) – GiamPy

+0

@GiamPyそうではありませんが、私は別の方法で処理したいと説明しましたが、私は既にこの方法で実装しています。 –

答えて

0

app\Exceptions\Handler.phprender機能が存在します。

例外の異なる種類に対処するために、あなたが試すことができます:[がつがつ食うからの例外をキャッチ]の

public function render($request, Exception $e) 
{ 
    if ($e instanceof SomeTypeException1) 
    { 
     #handle it 
    } 
    else if($e instanceof SomeTypeException2) 
    { 
     #handle it 
    } 

    return parent::render($request, $e); 
} 
関連する問題