flask项目统一捕获异常并自定义异常信息
背景:
errorhandler
from flask import jsonify
from . import admin
@admin.errorhandler(404)
def error_404(error):
"""这个handler可以catch住所有abort(404)以及找不到对应router的处理请求"""
response = dict(status=0, message="404 Not Found")
return jsonify(response), 404
@admin.errorhandler(Exception)
def error_500(error):
"""这个handler可以catch住所有的abort(500)和raise exeception."""
response = dict(status=0, message="500 Error")
return jsonify(response), 400
class MyError(Exception):
"""自定义错误类"""
pass
@admin.errorhandler(MyError)
def MyErrorHandle(error):
response = dict(status=0, message="400 Error")
return jsonify(response), 400
app_errorhandler
from . import auth
@auth.app_errorhandler(404)
def error_404(error):
response = dict(status=0, message="404 Not Found")
return jsonify(response), 404
实践
以下代码为我自己项目中的实现:
首先新建一个error.py文件
import json
from flask import Blueprint, Response exception = Blueprint('exception',__name__) @exception.app_errorhandler(404)
def error_404(error):
"""这个handler可以catch住所有abort(404)以及找不到对应router的处理请求"""
res = {"status": 404, "message": "404错误,找不到对应router"}
return Response(json.dumps(res), mimetype='application/json') @exception.app_errorhandler(405)
def error_405(error):
"""这个handler可以catch住所有abort(405)以及请求方式有误的请求"""
res = {"status": 405, "message": "请求方式有误"}
return Response(json.dumps(res), mimetype='application/json') # @exception.app_errorhandler(Exception)
# def error_500(error):
# """这个handler可以catch住所有的abort(500)和raise exeception."""
# res = {"status": 500, "message": "系统内部错误"}
# return Response(json.dumps(res), mimetype='application/json') class MyError(Exception):
"""自定义错误类"""
pass
然后在flask启动文件中新增如下代码:
# 导入error.py文件中的exception蓝图
from error import exception
from flask import Flask, request, Response app = Flask(__name__)
# 注册蓝图,并指定其对应的前缀(url_prefix)
app.register_blueprint(exception, url_prefix='/error')
# 以下可以写业务代码 if __name__ == '__main__':
app.run(host='0.0.0.0', port=8089, debug=False, threaded=True)
补充说明
flask项目统一捕获异常并自定义异常信息的更多相关文章
- 使用Nginx+Uwsgi部署Python Flask项目
第一次用Flask做Web(也是第一次用Python做Web),在部署的时候遇到了不少问题,现在将过程就下来,供在这方面也有疑惑的人参考.(PS:使用Apache+mod_wsgi部署模式的可以参考另 ...
- CentOS 下部署Nginx+Gunicorn+Supervisor部署Flask项目
原本之前有一部分东西是在Windows Server,但是由于Gunicorn不支持Windows部署起来颇为麻烦.最近转战CentOS,折腾一段时间,终于简单部署成功.CentOS新手,作为一个总结 ...
- 面试简历书写、Flask框架介绍与快速使用、Flask演示登录页面、用户信息页面案例
今日内容概要 面试简历编写 Flask框架介绍与安装 内容详细 1.面试简历编写 # 千万不要几个小时把简历凑出来 几天到一周 # 有没有面试机会,取决于简历写得怎么样 简历写好是第一步 # 投简历的 ...
- flask 项目基本框架的搭建
综合案例:学生成绩管理项目搭建 一 新建项目目录students,并创建虚拟环境 mkvirtualenv students 二 安装开发中使用的依赖模块 pip install flask==0.1 ...
- nginx + gunicorn + flask项目发布
程序安装(linux mint) gunicorn安装:pip install gunicorn nginx安装:sudo apt-get install nginx 配置 nginx默认配置信息在/ ...
- Flask项目示例目录
Flask不同于Django,Django在创建程序时自动得到必要的目录文件,而Flask则只有一个空文件夹,所以关于Flask项目的目录我们需要自行配置. 首先利用pycharm创建一个项目,在根目 ...
- 04 flask 项目整体构建
本文主要的目标是创建flask基本的项目架构,总体架构: 详细的项目目录结构: Flask 项目创建的过程 一.项目(students)创建初始化工作 1. 创建项目的虚拟环境 mkvirtualen ...
- 【Centos】【Python】【Flask】阿里云上部署一个 flask 项目
1. 安装 python3 和 pip3 参考:http://www.cnblogs.com/mqxs/p/8692870.html 2.安装 lnmpa 集成开发环境 参考:http://www.c ...
- Flask项目之手机端租房网站的实战开发(三)
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/8 ...
随机推荐
- PV、UV、IP、TPS、QPS、RPS等网络度量术语
PV:(访问量)即Page View --页面浏览量或单击量.用户每一次对网站中的任何页面进行访问后,被记录为一次PV,用户对同一页面的多次刷新,访问量将进行累计: UV:(独立访客)即Unique ...
- mybatis的@Options的使用
1.问题: 我采用的是mybatis的注解方式,打算插入一条数据之后返回主键,但是试了好几次都是返回的影响的记录数:1, @Insert(****) @Options(useGeneratedKeys ...
- desc和show
desc只能查看表结构 查看zx1表结构 desc zx1; mysql> desc zx1 -> ; +---------+---------+------+-----+-------- ...
- C语言博客作业10
一.本周教学内容&目标 第4章 循环结构 4.5 综合介绍循环结构的程序设计,涉及到多个典型算法.要求学生能够根据实际情况,选择合适的算法.合理的循环结构,熟练的编写程序. 二.本周作业头 这 ...
- LVS+Keepalived-DR模式(Apache)
Environment:4台CentOS机器 两台LVS 两台web服务器 LVS主备的操作,都需要安装ipvsadm和keepalived LVS主机操作 : 1.更改Keepalived的配置文件 ...
- 华为担纲建设基础软硬件国家新一代AI开放创新平台
[摘要] 全栈全场景AI能力爆发! [上海,2019年8月29日] 凭借领先的全栈全场景AI能力华为入选国家新一代人工智能开放创新平台 8月29日,科技部在2019世界人工智能大会宣布,将依托华为建设 ...
- “setTimeout、Promise、Async/Await 的区别”题目解析和扩展
解答这个题目之前,先回顾下JavaScript的事件循环(Event Loop). JavaScript的事件循环 事件循环(Event Loop):同步和异步任务分别进入不同的执行"场所& ...
- 详细nginx配置SSL
1.nginx的ssl 让nginx实现用https来访问网站,http是80端口,https是443端口. https其实就是一种加密的http 2.为什么要加密 例子:在网上银行汇款,在你汇款的过 ...
- WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.
利用vSphere调整各台虚拟机后,重新启动mesos,让其启动docker,并为每个container分配cpu和mem,但每次都有一个TASK_LOST. 查看mesos slave的log,发现 ...
- 自定义 cell
自定义 cell 1 什么是自定义 cell 自定义 cell 即 tableView,collectionView,scrollView中的 cell 使用的时候不能满足我们使用 cell 的需求, ...