1.参数传递
参数传递有几种方式:
- 1.路径中传参 使用:id 这种方式
- 2.路径后面跟 使用get请求
- 3.header中传参
- 4.body中传参
获取路径中、路径后面或者header的参数如上图都是好获取的,但是要获取body中的参数需要一个中间件才行:
使用:
2.异常理论
异常我们一般是通过try catch来捕获处理,下面有个图我们看下:
如上图,按照一般的逻辑,程序最后是会打印出error,因为func2会捕获到func3,但是真实的运行下来发现并没有打印error,而是直接报了一个异常。
这就是异步编程的异常难以处理的原因,因为异步,所在在func3执行定时器的时候,因为等待,所以直接下一步返回信息到了func2,然后func2并没有发现异常,然后就没有进入到catch里面。
在有关于异常冒泡的情况,上下都加上async和await即可。
但是,注意但是:一定要对调用方加上这两个关键字,返回方要返回promise
如果如下图这样,那么最终还是达不到理性的结果
如果在func3的方法最后加上return 1;那么return 1还是会返回出去。
我们需要对setTimeout里面的异步函数function加上关键字。
难道异步调用的异常处理这么难搞吗
如上面所述我们每次都需要包装一下,返回一个promise那不是累死了吗,这点还好,因为KOA包提供的各种函数基本返回的都是promise。
如果调用函数没有加await的话,就会报这样的错-没有处理的异常。
3.全局异常处理-中间件编写
编写测试的代码:
中间件的代码:
4.定义异常返回格式
上面定义没有问题,但是还可以优化,我们创建一个异常的基类,然后以对象的形式创建异常就更快了。
异常基类:
然后我们引入这个中间件即可使用:
5.特定异常类与global全局变量
在上面我们定义了一个异常类,然后方便我们统一的捕获异常并返回,但是有个小问题就是我们每次都要去构造一个异常类,这样有点麻烦,对于此我们可以多封装几个常用的异常类,这样如果遇到异常直接返回相应的异常即可:
那么还有优化空间吗?有:
我们每次要抛出异常的时候都得先引入异常的中间件,然后返回,是否可以有种方式,不用再引包?
我们可以在项目初始化的时间,封装一个全局变量,把异常赋值给他即可:
这样使用就行:
处理了已知的异常,剩下我们可以处理一下未知的异常:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.shuli.cc/?p=12733,转载请注明出处。
评论0