zino-rs/zino

全局异常处理这块是怎么样的?

Closed this issue · 9 comments

全局异常拦截和处理这块,对架构来说是很重要的,想请问下zino是否有这方面的考虑和设计。

目前的错误处理方式采用的是通用错误类型Error +tracing

具体可以参考:Zino使用一百行代码实现的错误处理

可能更关注是否能全局拦截处理,还是要针对每个controller进行处理

好想法!这里有两个问题,一是全局拦截处理在Rust中怎么实现;二是拦截之后是允许用户自定义处理还是就让框架默认处理了

好想法!这里有两个问题,一是全局拦截处理在Rust中怎么实现;二是拦截之后是允许用户自定义处理还是就让框架默认处理了

主要还是在问题一上,可以参考下spring和asp.net core的机制,和rust本身应该是没关系
问题二应该是两个都需要,提供默认的,然后可以自定义重写处理逻辑

Rust中没有exception这种东西,是靠返回值来处理错误。这种方式下,若要实现全局拦截就不知道怎么搞

拦截器 检测 约定成俗的一种返回结果 当做 exception

可以参考 gofiber
用中间件一层一层的返回 最后一层输出error

可以参考 gofiber 用中间件一层一层的返回 最后一层输出error

感谢 先学习一下 有机会可以多交流 🤝

我们新增了 bail!warn!两个宏来简化Error的构建以及错误追踪