msidolphin / vue-api-creator

An api manager bases on axios
MIT License
10 stars 1 forks source link

优雅的捕捉全局错误???? #8

Closed weiweidong1993 closed 4 years ago

weiweidong1993 commented 4 years ago

用了大佬您的vue-api-creator 在捕捉全局错误里有个问题就是: 有时无法正确捕捉到 错误信息

目前有三种 形式的错误信息 1.网络错误 2.自己定义的错误 3.系统错误,springboot自动封装的错误信息

main.js里面的代码如下:

image 看着怪怪的,总觉得哪里不对劲. 个人优化的代码如下: image kan看了下 总感觉怪怪的 代码太臃肿了

之前为了支持'blob'类型的返回数据 外面还判断了一层

image

难以阅读 ,这样写下去项目可维护性太差了

请大佬帮忙指点迷津,祝大佬新年快乐,来世我必结草衔环以报之

weiweidong1993 commented 4 years ago

核心问题: 1.不知道哪些错误应该被捕捉?(用户名密码登录错误的信息是应该在afterRequest里面还是应该在onError里面捕捉) 2.下载文件和普通的请求返回的数据类型不同,如何加以区分? 3.网络错误,自定义的错误,以及无法预料的错误(框架内部封装了)的信息如何正确显示其信息

以上三点,请大神指点一下 谢谢

weiweidong1993 commented 4 years ago

傻傻等待 你也不会回来 我总该为自己想想未来

msidolphin commented 4 years ago

@weiweidong1993 这个库在错误处理方面做的确实不够好,近期如果可能会抽空重构下 1、用户名密码错误这种属于业务异常,应该在catch中处理

this.$api('xxxx').then(res => {}).catch(err => {
   // 处理异常
})

2、下载文件和普通请求不可能会复用同一个api吧?所以我觉得无需加入区分啊 3、onError中我们一般只进行全局性的异常处理,如开发环境下打印错误日志,上报错误信息等,而自定义错误应该在catch中做处理(1中提到了)

weiweidong1993 commented 4 years ago

@weiweidong1993 这个库在错误处理方面做的确实不够好,近期如果可能会抽空重构下 1、用户名密码错误这种属于业务异常,应该在catch中处理

this.$api('xxxx').then(res => {}).catch(err => {
   // 处理异常
})

2、下载文件和普通请求不可能会复用同一个api吧?所以我觉得无需加入区分啊 3、onError中我们一般只进行全局性的异常处理,如开发环境下打印错误日志,上报错误信息等,而自定义错误应该在catch中做处理(1中提到了)

好的好的,这边项目写的有点混乱,之前设想是只要后端有错误就抛出异常,返回非2xx\开头的状态码.在全局错误里面捕捉-->事实证明这是错误的......难以维护 总有错误捕捉不到 等大神你项目重构了 再对应着改吧. 关注你 为大佬点赞:

为你唱一首歌:

痴心绝对

想用一杯Latte把你灌醉,好让你能多爱我一点

暗恋的滋味你不懂这种感觉,早有人陪的你永远不会

看见你和他在我面前,证明我的爱只是愚昧

你不懂我的,那些憔悴

是你永远不曾过的体会,为你付出那种伤心

你永远不了解,我又何苦勉强

自己爱上你的一切,你又狠狠逼退

我的防备,静静关上门来默数我的泪

明知道让你离开,他的世界不可能会

我还傻傻等到,奇迹出现的那一天

直到那一天,你会发现

真正爱你的人独自守着伤悲,看见你和他在我面前