1.0 KiB
1.0 KiB
1. 总体方法
本仓库的「错误处理」由三块构成:
- Python 服务端 (esp32_server.py):大量使用裸
except Exception:包裹每个 I/O / 子进程/线程入口,把网络/文件/Windows 句柄异常吞掉并继续运行;不存在自定义异常类型体系。 - 前端工具脚本 (scripts/*.py):通过
raise SystemExit(...)+urllib.error.HTTPError区分成功/失败路径,主流程用 try 捕获异常后终止。没有统一的 Result/Either 封装。 - 浏览器前端 (js/…):采用「Promise + fetch AbortSignal.timeout → throw Error」的异步错误模型;所有可见故障统一经
toast.js的showToast(msg, 'success'|'error'|'warning')在 UI 弹出(5s 去重),并通过log.js的addLog(level, tag, msg)结构化写入页面日志面板。BLE OTA、OTA 上传等长链路则在各自模块内维护状态机 (stages.js/progress.js/session.js),通过setBleStageError、cleanupAfterOtaFailure等函数显式转入错误阶段。