首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

前端异常的捕获与处理

try { // 可能会导致错误代码 } catch (error) { // 在错误发生时怎么处理 } 如果 try 块的任何代码发生了错误,就会立即退出代码执行过程,然后执行 catch...JS 代码错误 下面我司内部错误监控平台一次日常报错的调用堆栈截图: 错误还是比较明显的,this 指向导致的问题。...,因此必须在捕获阶段将其捕捉到才行,但是这种方式虽然可以捕捉到网络请求的异常,但是无法判断 HTTP 的状态是 404 还是其他比如 500 等等,所以还需要配合服务端日志才进行排查分析才可以。...例,模拟接口响应 401 的情况: // 请求 axios.get(/api/test/401") // 结果 Uncaught (in promise) Error: Request failed...接口请求出错 Error: Request failed with status code 401 at createError (createError.js:17) at settle (settle.js

3.3K30

axios 二次封装-状态处理拦截器

上篇[axios 二次封装-拦截器队列, 这篇是基于拦截器队列实现的状态处理拦截器, 某些情况下我们需要针对不同的响应状态码,执行不同的处理函数。例如: 410 权限校验, 500 服务器错误等。...除了常规的http状态码,后台也可能定了一套内部的请求码,例如: { code: 1, message:'OK' }。由此发现,如果希望通过定义一套处理模板代码,是无法满足实际业务需求的。...export const enum CUM_CODE { // 未知捕获 UNKNOWN = -1, // 请求失败,未获取到 status UNKNOWN_RES = -2 } /...需要对这两种情况做对应的适配,以捕获到所需的状态码。...status.install(http.candyPaper) // candyPaper http.use(status) 非请求错误or未定义状态规则 在之前的前置类型定义,定义了 CUM_CODE

79720
您找到你想要的搜索结果了吗?
是的
没有找到

目前5种最流行的发送HTTP请求的方法

这里需要注意的是,onerror方法只处理与请求相关的网络级错误。为了识别HTTP错误,我们必须检查onload方法的HTTP状态代码。...在这个实现,我们必须使用响应。ok字段检查响应是否包含HTTP错误,因为在catch方法捕获错误属于网络级别,而不是应用程序级别。...Axios还在其catch方法捕获HTTP错误,从而无需在处理响应之前专门检查状态代码。在catch方法内部,我们可以使用一个错误来区分HTTP错误。响应检查,它存储HTTP错误代码。...它自动地将响应体解析Javascript对象,而不需要开发人员的干涉。它还在catch方法捕获HTTP错误,我们可以使用错误来识别该方法。响应领域。如果请求由于网络相关的错误失败,则这些错误。...响应和错误状态字段将保持未定义。 我们可以用类似的方式用SuperAgent发送POST请求

2.9K20

在 JS 如何使用 Ajax 来进行请求

错误处理 请注意,对于成功的响应,我们期望状态代码200(正常状态),但是即使响应带有错误状态代码(例如404(未找到资源)和500(内部服务器错误)),fetch() API 的状态也是 resolved...我们可以在response 对象中看到HTTP状态: HTTP状态码,例如200。 ok –布尔值,如果HTTP状态代码200-299,则为true。...错误,它仍然会首先进入then()块,在该块它无法解析错误JSON并抛出catch()块捕获错误。...我个人更喜欢使用Axios API而不是fetch() API,原因如下: GET 请求提供 axios.get(), POST 请求提供 axios.post()等提供不同的方法,这样使我们的代码更简洁...将响应代码(例如404、500)视为可以在catch()块处理的错误,因此我们无需显式处理这些错误

8.8K20

详细自定义封装Axios请求库,你还不会二次封装吗?

在开发,发送请求的入参大多是一个对象。在发送时,如果该请求get请求,就需要对参数进行转化。...那既然这是一个axios的数据包,那我们就可以添加修改里面的数据。 我们看看它源码对应的代码段,是TS写的,是一个泛型对象,对象包含了一些设置参数。...然后我们Axios因为是基于Promise的,所以我们最后可以使用Promise.reject捕捉他的错误信息。 Promise.reject会在error返回一个Promise错误对象对象。...如果有error对象,并且error对象有response参数时,我们此时就会确定这是请求状态错误。 为什么呢?因为error.response的status会返回浏览器爆出的状态码。...状态码处理 那我们还是先看直接错误处理: 我们获取到状态码,根据不同状态码弹出不同错误提示,这里我们将错误提示文字报错到这个error

5.1K40

基于TypeScript封装Axios笔记(四)

=> { 7 console.log(e) 8}) 如果在请求的过程中发生任何错误,我们都可以在 reject 回调函数捕获到。...处理网络异常错误 当网络出现异常(比如不通)的时候发送请求会触发 XMLHttpRequest 对象实例的 error 事件,于是我们可以在 onerror 的事件回调函数捕获此类错误‍。...对于一个正常的请求,往往会返回 200-300 之间的 HTTP 状态码,对于不在这个区间的状态码,我们也把它们认为是一种错误的情况做处理。...接着我们在 handleResponse 函数对 request.status 的值再次判断,如果是 2xx 的状态码,则认为是一个正常的请求,否则抛错‍。...错误信息增强 需求分析 我们已经捕获了几类 AJAX 的错误,但是对于错误信息提供的非常有限,我们希望对外提供的信息不仅仅包含错误文本信息,还包括了请求对象配置 config,错误代码 code,XMLHttpRequest

85210

我司是怎么封装 axios 来处理百万级流量中平时少见过的问题~

请求被取消:忽略 网络异常:提示检查是否连接网络 请求超时:提示网络慢,请切换网络 服务器异常:提示系统出问题了 响应解析失败:同上,且可以进行错误日志上报 请求失败:这种情况通常是业务异常,前端需要根据错误码进行相应的处理...,最简单的就是消息提醒 请求成功:前端拿到数据后更新界面 但是,现有的 Axios 库对于异常结果没有提供较好的封装,Axios Promise catch 里包含各种类型的错误,而且没有提供错误码来识别请求失败的原因...如果设置 Axios responseType json 时,服务端返回的非 JSON 格式的响应内容会因为无法解析,response.data null 对于 500错误,响应内容会丢失,...200 的 JSON 解析代码),并且根据异常情况抛出直观的错误对象 内置默认处理表单类型的请求体 用法说明 eaxios 主要对响应的处理做了一些优化,除了以下部分,eaxios 的 api 与 axios...{} },code 0 表示正确的响应,非 0 表示异常,接口请求代码示例如下所示: ps:如果存在服务单接口请求规范,可以通过 eaxios.create 创建适用于不同接口规范的请求函数。

75610

初学者应该看的JavaScript Promise 完整指南

1.2 Promise 状态 Promise 可以分为四个状态: ⏳ Pending:初始状态,异步操作仍在进行。...Promise then then方法可以让异步操作成功或失败时得到通知。 它包含两个参数,一个用于成功执行,另一个则在发生错误时使用。...由于我们正在处理 .then(..., onError)部分的错误,因此调用catch。 d不会被调用。 如果要忽略错误并继续执行Promise链,可以在c上添加一个catch。...当然,这种过早的捕获错误是不太好的,因为容易在调试过程忽略一些潜在的问题。 Promise finally finally方法只在 Promise 状态是 settled 时才会调用。...它执行Promises并将其添加到队列。 如果队列小于并发限制,它将继续添加到队列。 达到限制后,我们使用Promise.race等待一个承诺完成,因此可以将其替换为新的承诺

3.2K30

一个小白的角度看JavaScript Promise 完整指南

1.2 Promise 状态 Promise 可以分为四个状态: ⏳ Pending:初始状态,异步操作仍在进行。...Promise then then方法可以让异步操作成功或失败时得到通知。它包含两个参数,一个用于成功执行,另一个则在发生错误时使用。...由于我们正在处理 .then(..., onError)部分的错误,因此调用catch。d不会被调用。如果要忽略错误并继续执行Promise链,可以在c上添加一个catch。...当然,这种过早的捕获错误是不太好的,因为容易在调试过程忽略一些潜在的问题。 Promise finally finally方法只在 Promise 状态是 settled 时才会调用。...它执行Promises并将其添加到队列。如果队列小于并发限制,它将继续添加到队列。达到限制后,我们使用Promise.race等待一个承诺完成,因此可以将其替换为新的承诺

3.5K31

Vue 前后端交互基础

♞ 对象的状态不受外界影响。Promise 对象代表一个异步操作,有三种状态:pending(进行)、fulfilled(已成功)和 rejected(已失败)。...只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是 Promise 这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。   ...函数的作用是,将 Promise 对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。   ...0: 请求初始化 1: 服务器连接已建立 2: 请求已接收 3: 请求处理...(error){ // 处理错误请求 console.log(error) }); ☞ 响应拦截器 axios.interceptors.response.use(function(res) {

2.1K50

Thinking--异步请求函数return应不应该加await?

在 codereview 代码,发现了这样的两种写法。...') } } 当异步操作发生异常时,会有差异: 写法一:会返回异常信息,即执行 catch 部分 写法二:异常的捕获需要在调用的函数处理,fn 函数 catch 部分无法执行 如果仔细分析,相信大家可以得出相应的结论...对于异常的处理,是提升代码鲁棒性的重要途径之一。且对错误捕获,会导致程序终止执行。...} else if (axios.isCancel(err)) { errorMsg = '请求被取消!'...请求经常会按照上述原则进行封装,axios 请求我们直接 return await promise 处理,便于对统一错误进行通用性处理(如401、403、500等),一致性强,减少不必要的冗余代码;而对于业务端我们采用

43210

Thinking--异步请求函数return应不应该加await?

在 codereview 代码,发现了这样的两种写法。...') } } 当异步操作发生异常时,会有差异: 写法一:会返回异常信息,即执行 catch 部分 写法二:异常的捕获需要在调用的函数处理,fn 函数 catch 部分无法执行 如果仔细分析,相信大家可以得出相应的结论...对于异常的处理,是提升代码鲁棒性的重要途径之一。且对错误捕获,会导致程序终止执行。...} else if (axios.isCancel(err)) { errorMsg = '请求被取消!'...请求经常会按照上述原则进行封装,axios 请求我们直接 return await promise 处理,便于对统一错误进行通用性处理(如401、403、500等),一致性强,减少不必要的冗余代码;而对于业务端我们采用

50310

常见的8个前端防御性编程方案

关于前端防御性编程 我们大多数情况可能遇到过,后端的由于同时请求人数过多,或者数据量过大,又或者是因为异常导致服务异常,接口请求失败,然后前端出现白屏或者报错 还有一种情况,是前端自身写的代码存在一些缺陷...js对象初始化属性值是undefined,从undefined读取属性就会导致这个错误(同理,null也一样) 如何避免?...遇到是空值的时候便会返回undefined. 2.前端接口层面的错误机制捕获 前端的接口调用,一般都比较频繁,我们这时候可以考虑使用单例模式,将所有的axios请求都用一个函数封装一层。...统一可以在这个函数catch捕获接口调用时候的未知错误,伪代码如下: function ajax(url,data,method='get'){ const promise = axios[method...错误边界在渲染期间、生命周期方法和整个组件树的构造函数捕获错误

1K20

Fetch还是Axios——哪个更适合HTTP请求

我们还可以将 config 对象定义变量,然后像下面的示例一样将其传递给 axios。...在一个较大的项目中,如果你创建了大量的调用,那么使用 axios 来避免重复代码会更舒服。 错误处理 在这一点上,我们还需要给 axios 点赞,因为处理错误是非常容易的。...如果出现像 404 这样的错误响应,promise 就会被拒绝并返回一个错误,所以我们需要捕获一个错误,我们可以检查它是什么类型的错误,就是这样。让我们看看代码示例。...,当响应良好时,我返回了数据,但是如果请求以任何方式失败,我就能够检查 .catch() 部分错误类型并返回正确的消息。...,我已经在承诺对象检查了代码状态,如果响应有状态 ok,那么我就可以处理并使用 .json() 方法,但如果没有,我必须在 .then() 里面返回错误

4.6K20

记得有一次面试被虐的题,Promise 完整指南

1.2 Promise 状态 Promise 可以分为四个状态: ⏳ Pending:初始状态,异步操作仍在进行。...Promise then then方法可以让异步操作成功或失败时得到通知。 它包含两个参数,一个用于成功执行,另一个则在发生错误时使用。...由于我们正在处理 .then(..., onError)部分的错误,因此调用catch。 d不会被调用。 如果要忽略错误并继续执行Promise链,可以在c上添加一个catch。...当然,这种过早的捕获错误是不太好的,因为容易在调试过程忽略一些潜在的问题。 Promise finally finally方法只在 Promise 状态是 settled 时才会调用。...它执行Promises并将其添加到队列。 如果队列小于并发限制,它将继续添加到队列。 达到限制后,我们使用Promise.race等待一个承诺完成,因此可以将其替换为新的承诺

2.3K20

10分钟了解JavaScript AsyncAwait

1、自动将常规函数转换为承诺。 2、当调用异步函数时,请使用其主体返回的内容进行解析。 3、异步函数允许使用await。 Await - 暂停异步函数的执行。...我们将编写一个使用AXIOS库的函数,并将HTTP GET请求发送到 xxx.json。 我们必须等待服务器响应,所以这个HTTP请求自然是异步的。 下面我们可以看到相同的函数实现了两次。...我们将有效地将执行时间减少到最慢请求的时间(getValueB - 4秒),而不是时间的总和。 处理Async / Await错误 ?...Async / Await的另一个好处是它允许我们在try / catch块捕获任何意外错误。...,或我们在try块编写的任何其他失败代码所引发的错误

1.8K40
领券