似乎不可能自己捕获错误,因为得到了laravel 4错误输出。
例如,如果我尝试:
$databaseConfig = Config::get('database.connections.mysql');
$connect = mysql_connect($databaseConfig['host'], $databaseConfig['username'], $databaseConfig['password']);
if (!$connect)
{
return 'error';
}
如果发生错误,我将不会收到“错误”,因此laravel会向我显示异常(在该橙色网站上)。
如果您继续尝试
,也是如此try {
$pdo = DB::connection('mysql')->getPdo();
}
catch(PDOException $exception) {
return Response::make('Database error! ' . $exception->getCode());
}
有没有办法做到这一点?
答案 0 :(得分: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文件中运行代码,看看它是否表现相同。
答案 1 :(得分:2)
请看这个页面:http://laravel.com/docs/errors
快速举例:
App::error(function(PDOException $e)
{
Log::error($exception);
return Response::make('Database error! ' . $exception->getCode());
});
答案 2 :(得分: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
});
将此代码放入路线文件中......
您将收到带有文件名和错误行的错误消息
所有大多数错误都将被涵盖。
答案 3 :(得分:0)
我知道我的回答很晚。但是从上面的答案中引用后,我还没有解决问题。
浏览此网站后(此处非常清楚的解释):https://stackify.com/php-try-catch-php-exception-tutorial/
这是一个附加答案:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);