2015-01-21 2 views
4

У меня есть приложение Flask. Я создал собственное исключение в одной из моих библиотек, связанную с очень конкретной ошибкой, о которой я хотел бы уведомить пользователя.Поймать исключение и отобразить страницу пользовательской ошибки

Что бы я хотел произойти, всякий раз, когда это исключение выбрасывается, Flask переходит на страницу по умолчанию для этого исключения с кратким объяснением того, что должен делать пользователь.

У меня есть

class SpecificException(Exceptions): 
    pass 

, а затем

def __verify_compatible_version(self): 
    if self.version != VERSION: 
     raise SpecificException ("detected incompatible version") 

Я не уверен, как это сделать. docs, похоже, ясно, что это возможно, но я не вижу никаких хороших примеров и советов о том, как это сделать. Как я могу отобразить пользовательскую страницу для обработки моего настраиваемого исключения?

ответ

4

Необходимо зарегистрировать обработчик ошибок для исключения. Обработчик ошибок ведет себя как обычный вид, он должен возвращать ответ (или данные, подобные ответам). В этом случае я предполагаю, что вы хотите в конечном итоге отправить код состояния 500, поэтому именно поэтому есть , 500 и возврат. Обработчик получает экземпляр исключения как первый аргумент, поэтому вы можете использовать его при рендеринге шаблона, если он имеет специальную информацию.

class SpecificException(Exception): 
    pass 

@app.errorhandler(SpecificException) 
def handle_specific_exception(e): 
    return render_template('errors/specific_exception.html', e=e), 500 
+0

Ах, это именно то, что мне нужно. Я не понимал, что веб-ошибка может быть просто изменена, так что спасибо! – clifgray