2016-07-07 5 views
1

私は次のコードを持っている - 私はちょうどcatch(Exception $ex)でこれを交換しようとした - 私はClientExceptionを取得するページ404エラーが、しかし、サーバーが500エラーを返した場合、私はServerExceptionを得るとき、私は、このB/Cを追加複数の例外タイプを取得するにはどうすればよいですか?

public function getPosts($limit = 25, $author = null) { 

    try { 

    } catch(\GuzzleHttp\Exception\ClientException $e) { 
     return []; 
    } 

    return []; 
} 

をしかし、私はまだ未処理の/ uncaught例外エラーを取得します。

try { 
    ... 
} catch (FooException e) { 
    ... 
} catch (BarException e) { 
    ... 
} catch (Exception e) { 
    ... 
} 

答えて

1

だけで、複数の漁獲量を一覧表示しますどちらが当然ですか)、それをちょうどException $eに変更するとうまくいくはずです。例外がどこにスローされているのですか?あなただけのGuzzleHttp\Exception\TransferExceptionをキャッチしようとすることができますので、あなたは、すべてのクライアント/サーバーの拡張のためにGuzzleHttp\Exception\TransferExceptionベースを見ることができますhttp://docs.guzzlephp.org/en/latest/quickstart.html#exceptionsがつがつ食うサイトで

2

あなたがPHPで別の例外タイプのために複数のcatchブロックを持つことができます。しかし

try { 

    } catch(\GuzzleHttp\Exception\ClientException $e) { 
     return []; 
    } catch(\GuzzleHttp\Exception\ServerException $e) { 
     //handle it... 
} 

、がつがつ食う例外は(一般的なPHP Exceptionクラスを拡張すると仮定し

+0

ありがとう - 例外をキャッチすることなくGuzzleHttpを使用していた別の場所がありました。例外を '例外$ e'に置き換えるだけでした。 – 5SK5

+0

@ 5SK5通常、合理的な最も例外的な例外を使用することをお勧めします。 – Ray

0

複数のエラータイプを処理するために、キャッチを順番に連鎖させることができます。

public function getPosts($limit = 25, $author = null) { 

    try { 

    } catch(\GuzzleHttp\Exception\ClientException $e) { 
     return []; 
    } catch(\GuzzleHttp\Exception\ServerException $e) { 
     return []; 
    } 

    return []; 
} 
+1

詳細を提供する方が良いでしょう。少なくともOPの質問に例外を使用し、ルート名前空間(先頭のバックスラッシュ)を忘れないようにしてください! –

+0

@IsmailRBOUH thanx。編集を行った。今はもっと読みやすいですか? – Iceman

0

ちょうどあなたが例外をキャッチしようとした場合、それは、すべての例外をキャッチすることはしなかった場合は、多分あなたは使用例外として例外が含まdidntのか試してみました、名前空間を認識すること

public function getPosts($limit = 25, $author = null) { 

    try { 

    } catch(\GuzzleHttp\Exception\ClientException $e) { 
     return []; 
    } catch (ServerException) { 
     //some code 
    } 

    return []; 
} 

を引く保ちます例外をキャッチするには

関連する問題