当前位置: 首页 > 面试题库 >

使用自定义错误处理程序时如何从中止命令访问错误消息

华建同
2023-03-14
问题内容

使用python flask服务器,我希望能够使用abort命令引发http错误响应,并在正文中使用自定义响应字符串和自定义消息

@app.errorhandler(400)
def custom400(error):
    response = jsonify({'message': error.message})
    response.status_code = 404
    response.status = 'error.Bad Request'
    return response

abort(400,'{"message":"custom error message to appear in body"}')

但是error.message变量显示为空字符串。我似乎找不到有关如何使用自定义错误处理程序访问中止功能的第二个变量的文档


问题答案:

如果您看一下,flask/__init__.py将会看到abort实际上是从导入的werkzeug.exceptions。查看Aborter该类,我们可以看到,当使用数字代码进行调用时,将HTTPException查找特定的子类并使用提供给Aborter实例的所有参数进行调用。看一下HTTPException,特别注意第85-89行,我们可以看到传递给第二个参数的参数HTTPException.__init__存储description属性中,如@dirn所指出的。

您可以从description属性访问消息:

@app.errorhandler(400)
def custom400(error):
    response = jsonify({'message': error.description['message']})
    # etc.

abort(400, {'message': 'custom error message to appear in body'})

或仅通过描述本身即可:

@app.errorhandler(400)
def custom400(error):
    response = jsonify({'message': error.description})
    # etc.

abort(400, 'custom error message to appear in body')


 类似资料:
  • 使用python烧瓶服务器,我希望能够使用abort命令抛出http错误响应,并在正文中使用自定义响应字符串和自定义消息 但是error.message变量显示为空字符串。我似乎找不到关于如何使用自定义错误处理程序访问中止函数的第二个变量的文档

  • 问题内容: 如何使用 自定义* 错误处理程序处理 解析 和 致命 错误? * 问题答案: 简单答案:不能。参见手册: 用户定义的函数无法处理以下错误类型:E_ERROR,E_PARSE,E_CORE_ERROR,E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING,以及在调用set_error_handler()的文件中引发的大多数E_STRICT。 对

  • 我们使用高图表在单个超文本标记语言页面上绘制多个图表。 然而,一个/一些图表抛出highchart错误,我们喜欢捕捉这些错误并向用户显示不同的错误。为此,highcharts确实提供了自定义错误处理程序。但这个自定义错误处理程序不提供有关抛出该错误的特定图表的信息。 这里是highcharts提供的JS Fiddle,它适用于图表: http://jsfiddle.net/gh/get/libra

  • 所有的错误最终都会被 Tango.ErrHandler 进行处理。 你可以自定义你的错误处理方式来替代默认的。例如: var ( prefix = "<html><head>tango</head><body><div>" suffix = fmt.Sprintf("</div><div>version: %s</div></body></html>", tango.Version

  • 404和500错误客户端和服务端都会通过error.js组件处理。如果你想改写它,则新建_error.js在文件夹中: import React from 'react' export default class Error extends React.Component { static getInitialProps({ res, err }) { const statusCod

  • 修改日志 2019-07-30 优化了 logger.go,日志新增了返回数据。 调用 alarm.WeChat("错误信息") alarm.Email("错误信息") alarm.Sms("错误信息") alarm.Panic("错误信息") 运行 下载源码后,请先执行 dep ensure 下载依赖包! 效果 {"time":"2019-07-23 22:55:27","alarm":