Как вызвать исключение в импортированном файле через приложение 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?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
92
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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})

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

Другие вопросы по теме

Похожие вопросы

Регулярное выражение Python для удаления апострофа в сокращениях
Я пытаюсь перебрать серию словарей панды (полученных через API), и я хочу разделить их на отчаянные серии в фрейме данных
Свойство класса с пробелом в нем
TypeError: '<' не поддерживается между экземплярами 'str' и 'int' Извлекать только те строки, которые соответствуют двум условиям
Selenium.common.exceptions.TimeoutException: ошибка сообщения при отправке текста в поле имени пользователя в iframe с использованием Selenium Python
Веб-скрейпинг на загруженных сайтах Dinamica JS
Как мне изменить размер многоугольника, чтобы он поместился на холсте? Python Ткинтер
Как перейти на последнюю страницу представления Flask-Admin с разбивкой на страницы по умолчанию... без сортировки по убыванию
RuntimeError: работа вне контекста запроса при попытке отправить запрос POST в приложение Flask из другого скрипта Python
Как discord.py обнаруживает, что сообщение отправляется с использованием только сопрограммы, которая определяется в самом коде?