Базовая практика для выбрасывания исключения/ошибки из функции

Например, у меня есть скрипт следующего содержания

def form_valid:
    temp = form.save(commit=False)
    try:
       temp.contents = makecontents() 
    except:
        messages.error(self.request, error)
        return self.render_to_response(self.get_context_data(form=form))
    messages.success(self.request, self.success_message)
    return super().form_valid(form)

def makecontents():
    if (if works well):
       return "this is my contents"
    else:
       return "this is error!!"

Итак, моя основная идея заключается в том, что при успехе makecontents() возвращается строка s и устанавливается как член экземпляра модели.

Однако makecontents() не удалось, я хочу вернуть error в form_valid.

Так, может быть, мне следует как-то изменить return "this is error!!"...

Возможно ли это? или моя идея ошибочна?

вы можете использовать anraise '<an Exception Type>("error message")', чтобы поднять ошибку, а затем except Exception as e:, чтобы получить сообщение об исключении:

def makecontents(works_well):
    try:
        if (works_well):
            return "this is my contents"
        else:
            raise SyntaxError("this is an error")
    except Exception as e:
        return str(e)
print(makecontents(works_well=False).__repr__())

вывод:

"this is an error"
Вернуться на верх