如何在Sails.js中通过Hand构造非自定义错误

时间:2015-12-10 00:00:43

标签: javascript error-handling sails.js

我正在编写一个服务,供我的控制器在我的Sails.js应用程序中使用。

如果服务中出现错误,我想返回错误。我习惯了function callback(err, bar){ if (err) return error}的语法。不过,我的情况略有不同。在以下代码中

function callBack(err, uploadedFiles){
    if (err) return err;
    if (uploadedFiles.length == {
       return foo; //This is what needs to be of type "err"
    } 
});
}
}

所以我创建一个像

这样的JSON对象
return { error: "error", message: 404}

我不知道该怎么做。

3 个答案:

答案 0 :(得分:1)

为什么不使用sails函数进行回复?如果说傻话,我也是新人,请原谅。

如果你想发送一个404状态代码,用于Not Found错误,你可以使用sails提供的响应res.notFound(),如下所示:

return res.notFound({
    message: "Some Message Here"
});

如果您想要显示完全自定义消息而没有任何状态代码(如404),请使用send()代替:

return res.send({
    status: "404 or anything you like",
    message: "Some Message Here"
});

很抱歉,res.send()也会生成一个状态代码,但它会是200,这意味着OK,所以它是一个成功代码。

答案 1 :(得分:0)

我相信它是:

public class Player {
    private int hp = 100;
    //with appropriate getters and setters, constructors etc.
}

public class Main{
    Player player1 = new Player();
    Player player2 = new Player();
    //etc.

    fightMonster(player1); //<--- I want to pass player1 to keep track of HP
}

public class fightMonster(something about player1){ //not sure what to put inside the ();
    player1.setHp(player1.getHp - 10); //monster attacks and does 10 dmg
}

答案 2 :(得分:0)

您可以像这样在服务中引发404错误(假设您的服务需要异步工作):

var err = new Error('your message');
err.status = 404; // could be other HTTP status
return cb(err);

在你的调用函数中,你可以像这样处理错误:

SomeServices.somefunction(options, function (err, data) {
  // res.negotiate(err) will automatically trigger res.notFound if err.status is 404
  if (err) return res.negotiate(err); 
  /* your logic if not 404 */
}

这里的代码非常简单。这就是你想要的吗?