Базовая практика для выбрасывания исключения/ошибки из функции
Например, у меня есть скрипт следующего содержания
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"