php 用Exception?大家都是这么写的吗?

查看:78
本文介绍了php 用Exception?大家都是这么写的吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

这是项目中注册的代码:

$mobile = trim($_POST['mobile']);
$code = $_POST['code'];
$password = $_POST['password'];

try {
    if(empty($password)) {
        throw new \Exception('请填写密码');
    }
    if(strlen($password) < 6 || preg_match("/^\d+$/", $password)) {
        throw new \Exception('密码必须大于6位,并且不能是纯数字');
    }
    $mobilecode = new Chkcode;
    if(!$mobilecode->verify($code, 'phone_code_'.$mobile)) {
        throw new \Exception('手机验证码不正确');
    }

    $user = new User();
    if($user->phone_exists($mobile)) {
        throw new \Exception('手机号已注册或绑定');
    }
    $uid = $user->create([
        'phone'=>$mobile,
        'password'=>$user->hash_password($password),
        'create_datetime'=>date('Y-m-d H:i:s')
    ]);
    $ip = $_SERVER['REMOTE_ADDR'];
    $user->log_history($uid, $ip, true);
    $user->set_online($uid);
    return $response->withJson([
        'errcode' => 0
    ]);
} catch (\Exception $e) {
    $msg = $e->getMessage();
    $code = $e->getCode() || 1;
    return $response->withJson([
        'errcode' => $code,
        'msg' => $msg
    ]);
}

之前的phper喜欢用Exception,在最下面统一处理异常
这样倒是挺方便的,流程明了,但是性能和return比应该低了一点吧

解决方案

这里并不需要考虑所谓的性能问题,使用异常处理方式可以实现程序执行完某一块之后而不返回,捕获异常后继续执行下面的代码,而return就只能退出函数了。

抛出异常的时候,不建议直接抛出Exception,而应该使用自定义的异常或者标准库中的异常,尽量做到抛出的异常能够直接反映出出现的问题。

这篇关于php 用Exception?大家都是这么写的吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆