build.app.hooks.error.broad_exception_handler()   A
last analyzed

Complexity

Conditions 4

Size

Total Lines 21
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 13
nop 1
dl 0
loc 21
rs 9.75
c 0
b 0
f 0
1
import json
2
from http import HTTPStatus
3
4
from flask import current_app, jsonify
5
from pydantic import ValidationError
6
from werkzeug.exceptions import HTTPException
7
8
9
def broad_exception_handler(e: Exception):
10
    # TODO 에러를 세분화해서 잡는 것을 추천합니다.
11
12
    if isinstance(e, HTTPException):
13
        message = e.description
14
        code = e.code
15
16
    elif isinstance(e, ValidationError):
17
        message = json.loads(e.json())
18
        code = HTTPStatus.BAD_REQUEST
19
20
    else:
21
        message = ""
22
        code = HTTPStatus.INTERNAL_SERVER_ERROR
23
24
        if current_app.debug:
25
            import traceback
26
27
            traceback.print_exc()
28
29
    return jsonify({"error": message}), code
30