在laravel中捕获PDOException

时间:2014-02-05 21:19:02

标签: php pdo laravel

我目前正在尝试在Laravel中捕获PDOException,并在捕获错误后允许我的应用继续。我已经在不同的位置尝试了多次尝试捕获,但是在应用程序失败之前我无法捕获错误。

这是我的模特:

class Oracle extends Eloquent {

  protected $connection = 'oracle';
  protected $user = '';
  protected $table = '';
  public $timestamps = false;

  public function __construct(array $attributes = array()) {
    parent::__construct($attributes);
    DB::reconnect('oracle');
    $this->table = Config::get('database.connections.oracle.table');
    $this->user = Config::get('database.connections.oracle.username');
  }

  public function scopegetPerms($callback, $db) {
    return $callback->select('*')->where('grantee', '=', strtoupper(trim($this->user)))->orderBy('granted_role');
  }

}

我正在动态更新oracle连接设置,并使用DB::reconnect功能来获取更改。一切都按预期工作。我希望能够捕获无效的用户/密码异常,并在以后继续通知用户。但我试图捕捉异常并没有奏效。

我试图在DB::reconnect()和查询本身周围放置一个try / catch。

这是我得到的错误:

{"error":{"type":"PDOException","message":"ORA-01017: invalid username\/password; logon denied"

1 个答案:

答案 0 :(得分:0)

运行时

new Oracle

在try {}中围绕那个捕捉{},如下所示:

try {
new Oracle; 
}catch(PDOException $e){ 
//Do whatever. 
}