开发者

Throwing exception in Python and reading the message in jQuery

开发者 https://www.devze.com 2023-01-11 09:43 出处:网络
How can I throw an exception on my server and have the exception\'s message be read in JavaScript (I\'m using AJAX with jQuery).My server environment is Google App Engine (Python).

How can I throw an exception on my server and have the exception's message be read in JavaScript (I'm using AJAX with jQuery). My server environment is Google App Engine (Python).

Here's my server code:

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

And her开发者_如何学JAVAe's the AJAX request:

$.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");
    }
});

Thanks!


If you have debug=True in your WSGI app configuration, the stack trace from your exception will get populated to the HTTP response body, and you can parse your message out of the stack trace client side.

Don't do this, though. It's insecure, and a bad design choice. For predictable, recoverable error conditions, you should either be catching the exception or not throwing one at all, e.g.:

if ( len(str(answer_text)) < 3):
    self.error(500)
    self.response.out.write("Answer text must be at least 2 characters long.")
    return


On the server, you need to catch the exception in a try/except block and turn it into a proper HTTP error (with code 500, generic server error, if a server error is what's happened -- 3xx if the problem is with the request, &c -- see here for all the HTTP status codes) with the Response's set_status method.

0

精彩评论

暂无评论...
验证码 换一张
取 消