在Python中抛出异常并在jQuery中读取消息
我想知道怎么在我的服务器上抛出一个异常,然后让这个异常的消息能在JavaScript中读取(我在用jQuery的AJAX)。我的服务器环境是Google App Engine(用Python)。
这是我的服务器代码:
def post(self):
answer_text = util.escapeText(self.request.get("answer"))
# Validation
if ( len(str(answer_text)) < 3):
raise Exception("Answer text must be at least 2 characters long.")
return
这是我的AJAX请求:
$.ajax({
type: "POST",
url: "/store_answer.html",
data: "question_id=" + question_id +"&answer="+answer,
success: function(responseText){
handleSuccessfulAnswer(question_id);
},
error: function(responseText){
// TODO: How to get the exception message here???
alert("???????????");
},
complete: function(data) {
submitCompleted(submitName, "Submit");
}
});
谢谢!
2 个回答
3
如果你在你的WSGI应用程序配置中设置了debug=True
,那么当出现错误时,错误的详细信息会显示在HTTP响应的内容里,你可以在客户端解析出这些信息。
不过,不要这样做。这是不安全的,而且设计上也不好。对于那些可以预见并且可以恢复的错误情况,你应该要么捕捉到这个错误,要么根本就不要抛出错误,比如:
if ( len(str(answer_text)) < 3):
self.error(500)
self.response.out.write("Answer text must be at least 2 characters long.")
return
2
在服务器上,你需要在一个叫做try/except的代码块里捕捉到错误,并把它转化成一个合适的HTTP错误。如果发生的是服务器错误,就用500这个代码;如果问题出在请求上,就用3xx的代码,等等。想了解所有的HTTP状态码,可以查看这里。然后,你可以使用Response
的set_status方法来设置这个状态。