Node.js 如何在react组件中返回http错误?
在服务器端,reactjs组件应该如何通知节点应用程序返回http错误 我的第一个想法是抛出一个错误:Node.js 如何在react组件中返回http错误?,node.js,reactjs,Node.js,Reactjs,在服务器端,reactjs组件应该如何通知节点应用程序返回http错误 我的第一个想法是抛出一个错误: var notFound = function () { var error = new Error("Not Found"); error.httpError = 404; throw error; }; var App = React.createClass({ render: function () { return react.
var notFound = function () {
var error = new Error("Not Found");
error.httpError = 404;
throw error;
};
var App = React.createClass({
render: function () {
return react.DOM.div(null,
Locations({path: this.props.path},
Location({path: "/", handler: home}),
NotFound({handler: notFound})
)
);
}
});
try {
res.send(React.renderComponentToString(app()));
}
catch (err) {
if(err.httpError) {
res.send(err.httpError);
} else {
throw err;
}
}
这是一个有效的解决方案吗?你还有别的想法吗
编辑:我想将这种情况扩展到3xx http重定向,这不是错误。它改变了什么吗 我不认为这与React有关,但实际上与任何框架有关 我认为本文件可以帮助您回答自己的问题: 但是,您应该检查Java世界中的这些(还不够)众所周知的规则:
httpError
属性)。任何代码都可以抛出异常,即使您非常确定它不会抛出异常。处理这个问题不是一个坏主意。如果发生这种情况,结果可能是res.send(未定义)
可能会触发另一个异常,您不会知道该异常的原因,因为它被您的代码不会引发任何意外异常的假设所吞没
要知道的另一个原则是快速失败。如果可以在渲染之前处理错误,则宁愿在渲染之前处理错误。比如:
if ( ValidPaths.contains(path) ) {
render()
} else {
res.send(404)
}
如果您可以在不引发异常的情况下处理错误,请注意。服务器上已经存在DOS攻击,从而在服务器上生成大量异常。对于非例外的事情,最好不要使用例外。只要意识到这一点,并选择自己,如果黑客试图DOS你是例外或不:)
无论如何,我认为Javascript异常处理是一个真正的难题:(这也是我的第一直觉。