这是项目中注册的代码:
$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比应该低了一点吧
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这里并不需要考虑所谓的性能问题,使用异常处理方式可以实现程序执行完某一块之后而不返回,捕获异常后继续执行下面的代码,而
return就只能退出函数了。抛出异常的时候,不建议直接抛出
Exception,而应该使用自定义的异常或者标准库中的异常,尽量做到抛出的异常能够直接反映出出现的问题。没问题好吧,最好的方法,自己定义一个异常,在全局判断处理这个异常,就不必要每次都这样写了
try catch 不是这么玩的吧,自己throw自己抓?一般都是catch 底层代码抛出的异常,在应用层捕获进行处理。
而且一次不要 catch 过多,只在预计会抛出异常的地方 catch,否则语意不明确,调试也不方便。
只是符合面相对象的设计原则么~
除了直接抛Exception不太好之外,没啥毛病吧。。。
最好是自定义一个异常类。
不然这样,不是注册输入错误的其他异常,也给一起catch了
至于性能,你怎么不关心一下js性能。。
验证的话我是采用直接
return出来。一般异步就直接exit了,像如果要走dao层,有事物相关的话我才用那种方式接收异常,然后把异常写进日志的, 验证的我首先定义了一个validateHelper.php类,然后引用的是valitron这个类库。我自己又稍微加了几条,自用valitron,反正就是不通过就exit了,这样会不会很2 啊..网站这东西受io制约比较严重,语言性能反而是次要的。
谢邀,一般我是定义一个方法 把获取到的异常参数传入我定义的方法,然后在前端页面进行展示 ,别的没什么。