繁体   English   中英

如何正确返回和处理函数错误

[英]How to properly return and handle function errors

我正在使用PHPAngular 4处理WebApp,以处理应用程序上的CRUD操作。 但是,当涉及到处理错误时,我觉得这不是做事情的最佳方法。

这就是我在Angular上调用函数的方式:

createUser(user: any): any {
    return this._http.post(this.backendUrl, user).map(response => {
        console.log('Success message: ', response);
    }).catch(this.handleErrors);
}

handleErrors(error: Response): any {
    console.log('Handle error: ', error);
}

比方说,例如,我想用唯一的电子邮件创建一个新用户,因此我具有此PHP函数来检查是否已经注册了电子邮件:

$param = [':email' => $email];
$check = sql("SELECT 1 FROM users WHERE email = :email", $param);
if ( $check ) {
    return print_r(array(
        'success' => 0,
        'message' => 'This email is already registered'
    ));
}

// [...Finish the user registration...]

return print_r(array(
    'success' => 1,
    'message' => 'Account successfully created!'
));

这样,当函数返回时,我将检查success值是1还是0然后使用alert()显示消息。 但是我不认为这是最好的/正确的方法。

我试图使用PHP异常,如下所示:

$param = [':email' => $email];
$check = sql("SELECT 1 FROM users WHERE email = :email", $param);
if ( $check ) {
    throw new Exception('This email is already registered');
}

但这不能解决问题。 如果我在控制台上的“网络”选项卡下检查该函数,将会发生错误,并且该函数将触发成功返回,但响应为空。 我在console.log上看到此消息:

成功消息:null


处理这种情况的最佳方法是什么? 我想检查函数是否要完成所有小片段并仅在它正确执行所有操作时才返回成功的地方。

RXJS-Catch将在HTTP代码上触发,指示错误。 通常,建议发送有用的代码,例如400(错误请求)。

要发送此类错误,请将以下行添加到您的PHP错误案例中:

http_response_code(400);

现在看起来应该像这样:

if ( $check ) {
    http_response_code(400);
    return print_r(array(
        'success' => 0,
        'message' => 'This email is already registered'
    ));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM