53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
from __future__ import print_function, unicode_literals, absolute_import, division
|
|
|
|
import six
|
|
from flask import request, Response
|
|
from peewee import DoesNotExist, IntegrityError
|
|
|
|
from domain_admin.log import logger
|
|
from domain_admin.utils.flask_ext.api_result import ApiResult
|
|
import traceback
|
|
|
|
from domain_admin.utils.flask_ext.app_exception import AppException
|
|
|
|
|
|
def error_handler(e):
|
|
"""
|
|
全局错误处理
|
|
:param e: Exception
|
|
:return:
|
|
"""
|
|
|
|
logger.error("request.path: %s", request.path)
|
|
logger.error(traceback.format_exc())
|
|
|
|
if request.path.startswith('/api'):
|
|
|
|
code = -1
|
|
|
|
if isinstance(e, KeyError):
|
|
msg = '参数缺失' + str(e)
|
|
|
|
elif isinstance(e, DoesNotExist):
|
|
msg = '数据不存在'
|
|
|
|
elif isinstance(e, IntegrityError):
|
|
msg = '数据已存在'
|
|
|
|
elif isinstance(e, AppException):
|
|
msg = e.get_message()
|
|
code = e.get_code()
|
|
|
|
else:
|
|
msg = six.text_type(e)
|
|
|
|
return ApiResult.error(msg=msg, code=code)
|
|
else:
|
|
|
|
message = '未知错误'
|
|
if hasattr(e, 'message'):
|
|
message = e.message
|
|
|
|
return Response("Internal Server Error: {}".format(message), status=500)
|