2017-12-03 11 views
1

私は例外をスローしてキャッチするためのベストプラクティスについていくつかアドバイスを受けようと考えています。 Amazon Mws APIに接続するための第三者のライブラリを使用しています。このライブラリは、すでに関数内で捕捉している例外をスローします。try-catch関数とメインスクリプト?

私の質問は、この関数がtry-catchを使ってメインスクリプトに例外を渡すべきかどうかです。例えば

function myFunction() { 
    try { 
     $obj = new Object(); 
     $obj->makeCall(); 
     return $obj->getData(); 
    } catch (Exception $ex) { 
     throw new Exception('There was a problem with the library '.$ex->getMessage()); 
    } 
} 

メインスクリプト内。あなたがメインのスクリプトで例外をキャッチしている場合は、あなたの機能に何らかの処理を行う必要があるまで

try { 
    //make the call 
    $response = myFunction(); 
} catch (Exception $e){ 
    //log error 
    $logger->error("log error"); 
} 
+0

例外をキャッチしなければならない場合(例外を再スローするだけではならない)、[exception constructor](http://php.net/manual/en/exception.construct.php)がそれを引き起こした例外である第3のパラメータ – apokryfos

+0

@apokryfosのように投げている新しい例外に$ ex変数を渡す必要はありません – azjezz

答えて

3

は、あなたはあなたの関数myFunctionでそれをキャッチする必要はありません。

コントロールは、子スクリプトや子供の子プログラムなどが例外をスローすると、メインスクリプトでキャッチされた例外に戻ります。

関連する問題