2013-06-16 7 views
5

エラーを自分で捕まえることはできないようですが、laravel 4エラー出力を取得する必要があります。例えばLaravel 4 - キャッチエラー

私がしようとした場合:

$databaseConfig = Config::get('database.connections.mysql'); 
    $connect = mysql_connect($databaseConfig['host'], $databaseConfig['username'], $databaseConfig['password']); 
    if (!$connect) 
    { 
     return 'error'; 
    } 

エラーは、私が「エラー」を得ることはありませんが発生した場合は、laravelが私に(そのオレンジのサイト上で)例外を示しinsted。

同じあなたは先に行くと

try { 
    $pdo = DB::connection('mysql')->getPdo(); 
} 
    catch(PDOException $exception) { 
    return Response::make('Database error! ' . $exception->getCode()); 
} 

をしようとそれをする方法はありますか?

答えて

16

コードを。これを私のroutes.phpに入れれば、予想されるエラー文字列(オレンジ色なし)が表示されます。

Route::get('error', function() { 
    try 
    { 
     $pdo = DB::connection('mysql')->getPdo(); 
    } 
    catch(PDOException $exception) 
    { 
     return Response::make('Database error! ' . $exception->getCode()); 
    } 
    return 'all fine'; 
}); 

ここでは、PDOExceptionがキャッチされない可能性があります。 PDOExceptionにバックスラッシュを追加して、現在の名前空間ではなくルートに定義されていることを確認してください。

catch(\PDOException $exception) 

また、routes.phpファイル内からコードを直接実行し、同じ動作をするかどうかを確認してください。あなたのルートファイルにこのコードを入れ

+0

ありがとうございます。あなたが指摘した名前空間の問題でした。これがそのように機能することを知らなかった。もう一度ありがとう。 – Michael

+0

問題はありませんが、ネームスペースの問題がありました.- – DerLola

+0

名前空間の問題に頭がおかれました。ありがとうございました。 –

2

、このページを見てみましょう:http://laravel.com/docs/errors

クイック例:あなたはうまく動作するはず提供

App::error(function(PDOException $e) 
{ 
    Log::error($exception); 

    return Response::make('Database error! ' . $exception->getCode()); 
}); 
+0

これをglobal.phpに追加する必要がありますが、それは私が望むものではありません。たとえば、データベースのデータが正しいかどうかを確認したい場合は、インストールの進行中にカスタムエラーを出したいとします。グローバルなエラーハンドラは私を助けません。 – Michael

+0

アンドレアが正しいです。あなたがそれを投げるときあなたのメッセージのエラーをカスタマイズすることができます。 – frenus

+0

?私は単にメッセージをカスタマイズしたくない、時々私はカスタムビュー、時にはまばらなページなどに表示したいと思っています。どうすればいいですか? – Michael

1
App::error(function(Exception $exception) { 
echo '<pre>'; 
echo 'MESSAGE :: '; 
    print_r($exception->getMessage()); 
echo '<br> CODE ::'; 
    print_r($exception->getCode()); 
echo '<br> FILE NAME ::'; 
    print_r($exception->getFile()); 
echo '<br> LINE NUMBER ::'; 
    print_r($exception->getLine()); 
die();// if you want than only 
}); 

...
あなたは、すべてのほとんどのエラーがカバーされるファイル名とERRORのLINE
とエラーメッセージが表示されます。