Php 如何捕捉数据库异常?代码500

Php 如何捕捉数据库异常?代码500,php,exception-handling,laravel,Php,Exception Handling,Laravel,我和laravel创建了一个登记表。数据库中的电子邮件列被分类为唯一。如果我用电子邮件地址注册了一个用户,并希望再次发送表单,我希望捕获此异常并向该用户显示错误消息 但目前我能识别的唯一一件事是,代码500返回给我,我没有机会捕捉到该异常以显示更用户友好的消息 我的代码如下,我的问题是如何检测到$user->save没有发生,并且应用程序不应该回发代码500 //Storing the data to the database try { $user = new Us

我和laravel创建了一个登记表。数据库中的电子邮件列被分类为唯一。如果我用电子邮件地址注册了一个用户,并希望再次发送表单,我希望捕获此异常并向该用户显示错误消息

但目前我能识别的唯一一件事是,代码500返回给我,我没有机会捕捉到该异常以显示更用户友好的消息

我的代码如下,我的问题是如何检测到
$user->save
没有发生,并且应用程序不应该回发代码500

 //Storing the data to the database 
    try {
        $user = new User;
        $user->name = Input::get('name');
    $user->surname = Input::get('sname');
        $user->email = Input::get('email');
        $user->activatehash = str_random(25);
        $user->ip = Request::getClientIp();
        $status = $user->save();
    } catch(\Exception $e) {
        //Do something when query fails. 
        return View::make("register", array('error' => 'true'))->withInput(Input::all());
    }   
有什么想法吗? 谢谢

你应该看看。然后,您可以定义一个规则,以确保您的电子邮件在保存之前是唯一的:

public static $rules = array(
    'email' => array('required', 'unique', 'email')
);

你搞乱了验证器类吗?是的,我想你应该在插入之前检查一下电子邮件地址是否被占用了。