Flask. При обработке ошибки ZeroDivisionError в cтандарте JSON-RPC, вместо кода ошибки 400 , отображается 500
У меня программа-калькулятор для базовых действий. При делении на ноль выбрасывается исключение, которое я отрабатываю, но в итоге в коде ответа вместо 422
выходит 500
. Причина непонятна.
Код:
import operator
from flask import Flask, jsonify
from flask_jsonrpc import JSONRPC
app = Flask(__name__)
jsonrpc = JSONRPC(app, "/api", enable_web_browsable_api=True)
@jsonrpc.method("calc.truediv")
def truediv(a: float, b: float) -> float:
try:
result = operator.truediv(a, b)
return result
except ZeroDivisionError as exc:
response = jsonify(
{
"jsonrpc": "2.0",
"id": 4,
"error": {"code": -32000, "message": str(exc)},
}
)
return response
if __name__ == "__main__":
app.run("0.0.0.0", debug=True)
Должно получиться примерно так:
У меня получает так:
Ответы (1 шт):
Автор решения: Igor
→ Ссылка
@jsonrpc.method("calc.truediv")
def truediv(a: float, b: float) -> float | str:
try:
result = operator.truediv(a, b)
return result
except ZeroDivisionError:
return "На ноль делить нельзя", 400
Можно ещё так:
except ZeroDivisionError:
return {"error": "На ноль делить нельзя"}, 400