Создание исключения в Python и чтение сообщения в jQuery - PullRequest
1 голос
/ 12 августа 2010

Как я могу сгенерировать исключение на моем сервере и сделать так, чтобы сообщение об исключении читалось в JavaScript (я использую AJAX с jQuery).Моя серверная среда - 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 голосов
/ 12 августа 2010

Если в конфигурации приложения WSGI указано debug=True, трассировка стека от вашего исключения будет заполнена до тела ответа HTTP, и вы сможете проанализировать ваше сообщение со стороны клиента трассировки стека.

Не делай этого, хотя. Это небезопасно и плохой выбор дизайна. Для предсказуемых, восстанавливаемых состояний ошибки вы должны либо перехватывать исключение, либо не создавать его вообще, например ::1004*

if ( len(str(answer_text)) < 3):
    self.error(500)
    self.response.out.write("Answer text must be at least 2 characters long.")
    return
2 голосов
/ 12 августа 2010

На сервере вам нужно перехватить исключение в блоке try / Кроме и превратить его в правильную ошибку HTTP (с кодом 500, общая ошибка сервера, если произошла ошибка сервера - 3xx, если проблема с запросом & c - см. здесь для всех кодов состояния HTTP) с Response 's set_status .

...