Как вызвать исключение в импортированном файле через приложение flask в формате json python?

У меня есть flask_app.py с обработкой исключений,

from flask import abort
@app.errorhandler(404)
def NotFoundError(e):
    return jsonify(error=str(e)), 404

if INDEX_EXTENSION == '':
    abort(404, description="Index Extension cannot be NULL")

если я запускаю приложение в POSTMAN, я получаю сообщение об ошибке в теле ответа POSTMAN, как и ожидалось.

{
    "error": "404 Not Found: Index Extension cannot be NULL"
}

Я импортирую функции из другого utils.py внутри flask_app.py, скажем

from utils import loaddata

Если функция вызывает ошибку, я могу поместить функцию в блок try внутри flask_app.py, чтобы передать сообщение об ошибке в POSTMAN,

Не помещая функцию в блок try, можно ли отправить исключение, вызванное внутри функции, в POSTMAN как сообщение jsonify вместо формата HTML, например, внутри функции, которую я имею

    if len(data) == 0:
        raise Exception('Null Data, Check Data Range')

это передается на консоль как Traceback (последний последний вызов):........ и в POSTMAN как

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
    <title>Exception: Null Data, Check Data Range // Werkzeug Debugger</title>
    <link rel="stylesheet" href="?__debugger__=yes&amp;cmd=resource&amp;f=style.css" type="text/css">
.....
.
.
.
.

Можно ли это jsonify?


person hanzgs    schedule 14.12.2020    source источник


Ответы (1)


Просто добавьте собственный обработчик ошибок, например:

def loaddata():
   messages = []
   # do stuff
   if len(data) == 0:
        messages.append('Null Data, Check Data Range')
   return messages

Затем в вашем коде фляги:

    dofunc = loaddata() # dofunc equals to error messages with the codes in the function being already executed
    # instead of abort
    if len(dofunc) > 0:
        return jsonify({'error': dofunc})

Демонстрационный код для понимания!

person Abdur-Rahmaan Janhangeer    schedule 14.12.2020