Promise错误处理比较:使用then的第二个参数还是catch

news2025/8/14 18:11:39

catch是一个语法糖而己 还是通过then来处理的

如果在then的第一个函数里抛出了异常,后面的catch能捕获到,而then的第二个函数捕获不到。
catch是一个语法糖而己 还是通过then 来处理的:

Promise.prototype.catch = function(fn){
    return this.then(null,fn);
}

建议总是使用catch方法

建议总是使用catch方法,而不使用then方法的第二个参数。

具体代码比较

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>promise</title>
  </head>
  <body>
    <script>
      const promise = new Promise((resolve, rejected) => {
        throw new Error("test");
      });

      //此时只有then的第二个参数可以捕获到错误信息
      promise
        .then(
          (res) => {
            //
          },
          (err) => {
            console.log("1:既有error,又有catch。只有error会被执行");
            console.log("err: " + err);
          }
        )
        .catch((err1) => {
          console.log("catch: " + err1);
        });

      //此时catch方法可以捕获到错误信息
      promise
        .then((res) => {
          //
        })
        .catch((err1) => {
          console.log("2:只有catch");
          console.log("catch: " + err1);
        });

      //此时只有then的第二个参数可以捕获到Promise内部抛出的错误信息
      promise
        .then(
          (res) => {
            throw new Error("hello");
          },
          (err) => {
            console.log("3: 既有error,又有catch。then里面又抛出error。只有error会被执行");
            console.log("error: " + err);
          }
        )
        .catch((err1) => {
          console.log("catch: " + err1);
        });

      //此时只有then的第二个参数可以捕获到Promise内部抛出的错误信息
      promise.then(
        (res) => {
          throw new Error("hello");
        },
        (err) => {
          console.log("4: 只有error,没有catch,then里面又抛出error。只有error会被执行");
          console.log("error: " + err);
        }
      );

      //此时catch可以捕获到Promise内部抛出的错误信息
      promise
        .then((res) => {
          throw new Error("hello");
        })
        .catch((err1) => {
          console.log("5: 只有catch,then里面又抛出error");
          console.log("catch: " + err1);
        });
    </script>
  </body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/33221.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Amazon Braket 与量子计算

KY1,Yankuan Pan2,Bertran Shao3,Zoey Deng41.Amazon HERO&#xff1b;2.项目架构师&#xff1b;3.开发者生态负责人;4.开发者关系 Amazon Braket 是一项完全托管式的量子计算服务&#xff0c;主要可面向研究人员、科学家和开发人员提供一些量子计算软硬件服务进行研究和开发工…

中国设备维修安装企业能力等级证书(制冷空调)

中国设备维修安装企业能力等级证书&#xff08;制冷空调&#xff09;&#xff0c;是由中国制冷学会审定&#xff0c;中国设备管理协会批准颁发&#xff0c;全国性制冷空调设备维修、安装行业能力等级证书。也是目前国内唯一能在中国招标网http://www.ctba.org.cn/查询到的制冷空…

AVX | 关于RC电路耦合、相移、滤波、微分、积分的那些事儿~

所谓RC电路&#xff0c;就是电阻R和电容C组成的一种分压电路。如下图1所示&#xff1a;输入电压加于RC串联电路两端&#xff0c;输出电压取自于电阻R或电容C。由于电容的特殊性质&#xff0c;对下图(a)和(b)不同的输出电压取法&#xff0c;呈现出不同的频率特性。 由此RC电路在…

STM32实战总结:HAL之HMI

什么是HMI&#xff1f; HMI人机界面&#xff0c;HMI是Human Machine Interface 的缩写&#xff0c;“人机接口”&#xff0c;也叫人机界面。 人机界面&#xff08;又称用户界面或使用者界面&#xff09;是系统和用户之间进行交互和信息交换的媒介&#xff0c; 它实现信息的内部…

集世界杯+GameFi元素的MetaElfLand,为何将在世界杯期间爆发?

又到了四年一度的球迷狂欢节&#xff0c;本次卡塔尔世界杯已于11月21号举行。 每当世界杯来临&#xff0c;与世界杯相关产业都会迎来一波爆发&#xff0c;毕竟这个千亿美金市值的市场暗藏着无数的机会。而自GameFi的火热开始&#xff0c;世界杯也成为了加密投资者的狂欢日&…

C语言内存分区

本文参考详细讲解C语言五大内存分区与可执行程序的三段(Text段、Date段、Bss段)【建议收藏】 - 知乎 一、C语言内存分区 1.栈区&#xff08;stack&#xff09;&#xff1a;存放函数形参和局部变量&#xff0c;由编译器自动分配和释放 2.堆区&#xff08;heap&#xff09;&am…

mysql-4-锁机制

1 场景 库存等 共享资源等。 都需要锁&#xff0c;大量并发下&#xff0c;防止库存超卖等现象产生。 2分类 分类 1&#xff1a;(读&#xff0c;写)锁&#xff1a;对数据操作的类型分类 2&#xff1a; 对数据操作的粒度分 行锁&#xff0c;表锁 读写锁 读锁(共享锁)&#xff1a…

ISCSLP 2022 | NPU-ASLP实验室8篇论文被录用

作为语音处理技术领域的旗舰国际会议&#xff0c;ISCSLP2022&#xff08;International Symposium on Chinese Spoken Language Processing&#xff09;将于12月11-14日在新加坡举办。 西工大音频语音与语言处理研究组(ASLPNPU)本届会议将携合作伙伴宣读论文8篇&#xff0c;涉…

MCE | 曲贝替定——来自海洋的抗软组织肿瘤化合物

目前&#xff0c;常用于 STS 的化疗药物为蒽环类药物如阿霉素 (ADM)、异环磷酰胺(IFO) 、环磷酰胺 (CTX) 、顺铂 (DDP) 等。但是&#xff0c;为了解决部分患者不适合利用蒽环类和酰胺类药物治疗&#xff0c;或利用这些药物治疗无效的问题&#xff0c;仍需寻找新的药物治疗方案。…

用gdb调试有问题的程序:练习使用gcc编译器和gdb调试器

内容 1&#xff0e;用gdb调试有问题的程序&#xff1a;练习使用gcc编译器和gdb调试器&#xff1b; 2&#xff0e;练习使用make工程管理器。 实操流程&#xff1a; &#xff08;1&#xff09;编制greet.c文件。 此代码的原意为倒序输出main函数中定义的字符串&#xff0c;但…

JNDI注入的理解、JDK给出的修复

RMI RMI(Remote Method Invocation):一种执行远程调用的Java API。RMI的目的是使在不同计算机上运行的对象(Object)之间的调用行为类似于本地调用。 RMI机制:服务器(Server)应实现一定的功能并将其注册到注册表(Registry)中,客户端(Client)应在注册表的命名空间(Naming spac…

RabbitMQ入门教程(安装,管理插件,Publisher/Consumer/交换机/路由/队列/绑定关系,及如何保证100%投递等)

RabbitMQ入门教程&#xff08;安装&#xff0c;管理插件&#xff0c;Publisher/Consumer/交换机/路由/队列/绑定关系&#xff0c;及如何保证100%投递等&#xff09; 1. RabbitMQ简介及AMQP协议 开源的消息代理和队列服务器。基于AMQP&#xff08;Advanced Message Queuing Pr…

矢量网络分析仪如何校准?安泰测试来助力

要想学会测试, 首先要学会校准! 对矢量网络分析仪的校准是非常重要的一个步骤&#xff0c;能够提高仪器的测量精度。今天安泰测试就给大家分享一下矢量网络分析仪的校准操作步骤&#xff1a; 一、单端口校准 校准目的&#xff1a; 通过单端口校准可以消除该端口的反射跟踪误差、…

[附源码]SSM计算机毕业设计教学辅助系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

双层神经网络实现非线性回归——机器学习

目录 一、算法思想 二、算法原理 三、算法分析 四、源程序代码 五、运行结果及分析 一、算法思想 在两层神经网络之间&#xff0c;必须有激活函数连接&#xff0c;从而加入非线性因素&#xff0c;提高神经网络的能力。所以&#xff0c;我们先从激活函数学起&#xff0c;一类…

线代——求逆矩阵的快捷方法

通常&#xff0c;求逆矩阵有两种方法&#xff1a; 方法一&#xff1a; 方法二&#xff1a; 但是&#xff0c;对于特殊矩阵&#xff0c;如: 1、二阶矩阵 A[abcd]A \begin{bmatrix} a & b\\ c & d \end{bmatrix}A[ac​bd​]&#xff0c;其逆矩阵 A−11ad−bc[d−b−ca…

FienReport在线报表工具-大数据集导出示例

前言 在企业管理中&#xff0c;报表可以以图表等简洁的方式向用户显示数据&#xff0c;从而提高工作效率。许多公司紧跟信息技术的潮流&#xff0c;已经应用了报表软件工具。“我们企业想用一个报表工具&#xff0c;你有推荐吗&#xff1f;”这是这两年被问到最多的问题&#…

MySQL 进阶 怎么去了解MySQL的架构原理

前言 在了解 MySQL 原理之前&#xff0c;对我而言 MySQL 就是一个黑盒子&#xff0c;我写的SQL 语句通过服务发送给 MySQL 数据库&#xff0c;然后数据库就执行 SQL 语句&#xff0c;返回一些查询结果或做一些操作。然后就没然后了。。。再深入一点&#xff0c;就是知道某些 S…

机器学习-聚类算法

机器学习-基础知识 机器学习-线性回归 机器学习-逻辑回归 机器学习-聚类算法 机器学习-决策树算法 机器学习-集成算法 机器学习-SVM算法 文章目录聚类算法1. K-Means算法1.1. 理论基础1.2. 具体代码1.2.1. 数据集1.2.2. 自定义k-means算法类1.2.3. 测试模块1.3. 效果展示1.3.1.…

Flink 多流转换

多流转换分流使用侧输出流基本合流操作联合&#xff08;Union&#xff09;连接&#xff08;Connect&#xff09;基于时间的合流——双流联结&#xff08;Join&#xff09;窗口联结&#xff08;Window Join&#xff09;间隔联结&#xff08;Interval Join&#xff09;窗口同组联…