Skip to Content
异常诊断异常和错误的诊断方法

异常和错误的诊断方法

调试是应用开发中关键的一个环节,学习在出现错误、异常等情况下,如何观察现象、定位错误、修复问题,是开发者的基本素质。调试大致分为以下步骤:复现问题、观察现象、提出猜想、验证猜想。


调试通用流程

  1. 复现问题:尝试在相同操作路径下复现问题,确认是否为偶发或持续性问题。
  2. 观察现象
    • UI 层:组件样式、布局、交互是否符合预期
    • 前端状态层:变量、数据流是否正常,是否有前端报错
    • 请求层:请求体和响应体是否符合预期,是否有网络错误
    • 数据库层:数据、模型、约束、关联等是否正确
  3. 提出猜想:分析信息,推测原因,也可让 AI 协助分析。
  4. 验证猜想:修改配置后再次运行,观察问题是否解决。

编辑时错误

典型表现

  • 编辑器右上角错误图标有数字显示。

处理办法

  1. 点击“去修复”跳转到错误位置,根据报错提示修改。
  2. 常见类型:
    • 类型错误:如字段需为 Int 类型却填入字符串。
      • 例:原价字段填“1元”导致类型错误,需去掉“元”仅填数值。
      • 编辑器类型错误提示示例
    • 必填项缺失
      • 编辑器必填项缺失提示示例

部署和发布时错误

典型表现

  • 更新预览报错
  • 后端部署失败

更新预览报错处理

  1. 查看错误信息(如有)
  2. 根据错误信息处理,看不懂可咨询 AI
  3. 上报官方处理
更新预览报错示例官方技术支持二维码

后端更新失败处理

直接点击上报,官方会协助处理。

后端更新失败上报示例


线上 UI 显示异常

典型表现

  • 编辑器上高度对齐的组件在预览后未对齐,或宽度正常的组件在手机端超出屏幕。

处理办法

检查组件 UI 设计配置

  1. 相对布局与绝对布局在不同宽度容器下可能出现对齐问题。

    相对布局组件示例绝对布局组件示例
  2. 在宽度 375 的机型上显示正常,宽度 430 时绝对布局会偏移。

    375宽度下显示效果430宽度下显示效果
  3. 文本超出视图组件:可将视图组件“溢出”配置为“隐藏”或“滚动”。

    文本超出视图组件示例

    视图组件溢出配置示例

  4. 编辑器上组件平齐,手机端未对齐,若配置无误可能为平台 bug,可反馈官方。

    组件对齐问题反馈示例1组件对齐问题反馈示例2

请求异常

典型表现

  • 报错:行为流调用失败、API 执行失败、内置行为报错等
  • 异常:运行结果不符业务预期

处理办法

1. 根据错误信息快速处理

  • 前往请求错误对照表检查对应错误及处理方式
  • 也可让 AI 帮助分析错误信息,参考如下提示词:
你是一位精通 PostgreSQL 数据库和 GraphQL API 的开发专家。你的任务是: 1. 分析请求信息:检查 GraphQL 请求语法、目标、数据库返回的错误信息。 2. 识别错误类型和原因:如语法错误、类型错误、数据库约束冲突等。 3. 提供详细的错误描述和解决方案。 4. 输出格式要求: - 明确是否存在错误 - 列出错误及解决方案 - 格式:**错误描述:** [描述] **解决方案:** [方案] 5. 具体信息: - StatementCallback; ERROR: duplicate key value violates unique constraint "unique_blog_m8fifp2i"\n Detail: Key (title)=(1) already exists.

2. 找到错误或异常的请求

  • 小程序:右上角菜单 > 开发调试 > vConsole,查看 request 和 result

    小程序 vConsole request小程序 vConsole result
  • 网页:F12 或右键“检查” > Network,查找 graphql-v2 请求

    网页 Network 请求示例1网页 Network 请求示例2
  • 日志:编辑器右上角“日志”功能,更多内容见日志服务

3. 分析请求内容

  • 请求体(Request body)
    • 包含发送请求的关键信息,可在小程序“request”或浏览器“Payload”中查看。
    • 例:
{ "query": "query blogArticleList_82df5ec2($where: blog_article_bool_exp!, $orderBy: [blog_article_order_by!]!) {blog_article ( where: $where order_by: $orderBy limit: 2) { id \n title}\n\n}", "variables": { "where": { "title": { "_like": "%AI%" } }, "orderBy": [ { "created_at": "asc_nulls_last" } ] } }
  • 响应体(Response body)
    • 包含请求返回结果,可在小程序“result”或浏览器“Response”中查看。
    • 如报错,可在“Response”找到”errors”,如:
{ "data": null, "errors": [ { "errorCode": 403, "extensions": { "classification": "TABLE_ACCESS" }, "locations": [ { "column": 3, "line": 2 } ], "message": "User 1 has no permission for SELECT on order", "operation": "order", "path": [ "order" ] } ] }

4. 猜测原因、尝试修复

  1. 检查请求体与编辑器配置是否一致
  2. 检查响应体是否有错误,结果是否符合预期
  3. 获取足够信息后,尝试修复
  4. 无法分析时可将信息发给 AI 协助

参考案例

  1. 支付、退款执行错误:如日志显示权限配置错误,检查角色权限

退款权限配置错误示例

  1. 小程序 API 执行错误:如参数字段需非空文本但传了 null
小程序 API 执行错误日志1小程序 API 执行错误日志2
  1. 行为流执行失败:如字段名拼写错误导致失败

行为流字段拼写错误示例

  1. 更改表数据错误:如插入重复值导致唯一约束冲突

唯一约束冲突示例1

唯一约束冲突示例2

  1. 条件式容器显示异常:如 name 字段值与预期不符

条件式容器数据异常1

条件式容器数据异常2


技术支持和参考资料

  1. 平台帮助文档:查阅官方“常见问题”章节,获取针对性解决方案。
  2. 社区支持社区发帖或群内提问,附项目ID、复现步骤、截图及日志。
💡

正确提问姿势: 详细描述并附截图可提升回复效率。

示例:

  1. 期待的效果
  2. 已尝试方法
  3. 错误页面及组件
  4. 错误信息或截图

错误提问示范: “为什么预览报错了” “怎么做一个商城?”

  • 购买官方技术支持:在个人中心购买专属技术支持
Last updated on