web-dev-qa-db-ja.com

Laravelのtry and catchによるエラー処理

アプリに適切なエラー処理を実装したいのですが、エラーをキャッチするためにこのファイルを強制しました。

App\Services\PayUService

try {
  $this->buildXMLHeader; // Should be $this->buildXMLHeader();
} catch (Exception $e) {
        return $e;
}

App\Controller\ProductController

function secTransaction(){
  if ($e) {
    return view('products.error', compact('e'));
  }
}

そして、これは私が得るものです。

enter image description here

Laravelが私をビューにリダイレクトしない理由はわかりません。エラーは強制的に正しいですか?

25
suarsenegger

namespaceの中にいるので、\Exceptionを使用してグローバル名前空間を指定する必要があります。

try {

  $this->buildXMLHeader();

} catch (\Exception $e) {

    return $e->getMessage();
}

あなたのコードでcatch (Exception $e)を使用したので、Exceptionは次のように検索されます:

App\Services\PayUService\Exception

App\Services\PayUService内にExceptionクラスがないため、トリガーされません。または、use Exception;のようなクラスの上部でuseステートメントを使用してから、catch (Exception $e)を使用できます。

87
The Alpha