前段时间吐槽过项目里面不允许使用then().catch(),只能用try{} catch{}。
后来意识到,相较于每层逻辑都处理一遍promise.reject,其实try catch才是更方便的做法。
程序内部所有promise用await处理,promise.reject不用管,因为最外层的promise会捕获到。除了promise.reject以外的所有异常直接throw error。
最后只在最外层用try catch执行一次promise,内部的所有错误就都可以在最外层捕获,然后在这里封装全局的错误处理方法(可用instanceof区分各种错误所属的原型)。