/serviceWorker.js'); ❝register()方法返回一个Promise 该 Promise 成功时返回 ServiceWorkerRegistration 对象 在注册失败时拒绝...,失败回调(拒绝) navigator.serviceWorker.register('....即使浏览器「未全局支持」服务工作线程,服务工作线程本身对页面也应该是「不可见」的。这是因为它的行为类似代理,就算有需要它处理的操作,也仅仅是「发送常规的网络请求」。...在这个状态,服务工作线程会捕获 其作用域中的 「fetch()事件」、「通知和推送事件」。...服务工作线程可以「在安装时缓存后备资源」,然后在缓存和网络都失败时返回它们。
总结一下,Promise 就是一个承诺,承诺会给你一个处理结果,可能是成功的,可能是失败的,而返回结果之前,你可以同时做其他事情。...') // 成功打印“成功 请求成功” }, err => { console.log(err, '请求失败') }) 2....(data, '请求成功') return '3' }) 3.1 改写 then 方法 改动点如下: then 方法需要返回 MyPromise 实例; then 内部调用回调时,需通过 resolvePromise...如果返回的是成功的 promise,会采用上一次的结果;如果返回的是失败的 promise,会用这个失败的结果,传到 catch 中。...1s 后输出:resolve (5) [1, 2, 3, 'ok1', 'ok2'] 4.6 Promise.race Promise.race 用来处理多个请求,采用最快的(谁先完成用谁的)。
本文所有代码示例均已提交到github,地址1 Service Worker是什么 Service Worker是渐进式web应用(pwa)的核心技术。...下面我们创建一下serviceworker.js文件。 在这里,监听了两个事件。在install事件中,我们将一个离线页面缓存进来。在fetch事件中,如果资源请求失败的话,使用刚才缓存的离线页面。...在请求失败的情况下,使用的缓存也不一定是正在请求资源的缓存,同样也可以是其他的缺省资源。就像第一个代码示例一样,在html请求失败的情况下,我们可以返回一个断网页面。...1. 定义资源版本号 首先我们要在serviceworker.js中定义一些变量。cacheKey就是一个特定字符串和VERSION拼接的字符串,作为缓存名称来使用。...sync事件的数据传递 上面的例子中,展示了如何使用Service Worker来代理数据请求。但是大部分的数据请求都是需要参数的,那么如何将参数传递到Service Worker呢。 1.
JS 代码,例如try块中的以下代码在语法上是错误的,但它不会被catch块捕获。...noSuchVariable; // undefined variable }, 1000); } catch (err) { console.log("这里不会被执行"); } 未捕获的...Error: Error while executing the code 这里注意两件事: 即使从try块抛出错误后,也会执行finally块 如果没有catch块,错误将不能被优雅地处理,从而导致未捕获的错误...JS 中的内置错误 3.1 Error JavaScript 有内置的错误对象,它通常由try块抛出,并在catch块中捕获,Error 对象包含以下属性: name:是错误的名称,例如 “Error”...➤ 1(); ⓧ Uncaught TypeError: 1 is not a function ➤ null.name; ⓧ Uncaught TypeError: Cannot read property
前言在断言一些代码块或者函数时会引发意料之中的异常或者其他失败的异常导致程序无法运行时,使用raises捕获匹配到的异常可以让代码继续运行。...如果没有异常执行这块代码有异常发生")finally: print("退出try时总会执行")Pytest的异常处理:pytest.raisespytest.raises和with语句一起使用,成功断言到期望异常则测试通过,未断言到期望异常则测试失败...,如下代码中, with语句范围断言到期望异常TypeError - 测试通过示例代码如下:import pytestdef test_01(): with pytest.raises(TypeError...passed in 0.02s ==============================如下代码中, with语句范围未断言到期望TypeError - 测试失败import pytestdef test...在测试中,try...except可以用来捕获并处理预期的异常。
1.异常的类型 异常的类型多种多样,常见的异常有: AttributeError 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x IOError 输入/输出异常;基本上是无法打开文件...BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基类...OSError 操作系统错误 WindowsError 系统调用失败 ImportError 导入模块/对象失败 LookupError 无效数据查询的基类 IndexError...(没有属性) UnboundLocalError 访问未初始化的本地变量 ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象 RuntimeError...pass 这里的except就像是java里的catch 也可以在代码中添加多个except语句来捕获不同种类型的异常,执行相应不同的操作 3.主动抛出异常 异常的抛出可以手动添加 try:
如果您在 Visual Studio 中,它会使用请求的预发布状态。...下表显示了rollForward键的可能值: 表格1 价值 行为 patch 使用指定的版本。 如果未找到,则前滚到最新的补丁级别。 如果找不到,则失败。 此值是早期版本的 SDK 的旧行为。...如果找不到,则失败。 latestPatch 使用最新安装的补丁级别,该补丁级别与请求的主要、次要和功能带与补丁级别相匹配,并且大于或等于指定的值。 如果找不到,则失败。...如果您不在Visual Studio 中,则会考虑预发布版本。 如果您在 Visual Studio 中,它会使用请求的预发布状态。...您正在使用 .NET 的预览版。请参阅:https : //aka.ms/dotnet-core-preview .NET SDK 版本具有高质量的历史和承诺。
就是mixlab那个logo PWA是一系列技术的集合,里面最核心的是一个叫“app shell”的概念。 - 什么是App shell?...这样,下次有人从设备访问应用程序时,UI立即从缓存加载,并从服务器请求新内容(如果它已在缓存中不可用)。 一个App shell的代码结构如下: <!...scope: ', registration.scope); }) .catch(function(err) { // 注册失败...return cache.addAll(contentToCache); }) ); }); //如果条件允许,service worker将从缓存中请求...除了配置serviceWorker.js之外,我们还需要配置manifest.json文件。
安装 ServiceWorker // serviceWorker.js const CACHE_NAME = 'cache-v1'; // 需要缓存的文件 const urlsToCache = [...我们可以看到,在 install 事件的回调中,我们打开了名字为 cache-v1 的缓存,它返回的是一个 promise。...如果所有缓存数据都成功,就表示 ServiceWorker 安装成功;如果控制台提示 Uncaught (in promise) TypeError: Failed to execute 'Cache'...on 'addAll': Request failed,则表示安装失败。...正因为 ServiceWorker 可以代理网络请求,所以为了安全起见,规范中规定它只能在 https 和 localhost 下才能开启。
如果异常是未捕获的,也就是说程序员没有采取任何措施来捕获它,则程序将会崩溃。 你在什么时候及在什么地方捕获代码中的异常取决于特定的用例。 例如,你可能想要在栈中传播异常,使程序完全崩溃。...另外无论函数的执行结果如何,不管是成功还是失败,finally 中的所有代码都会被执行。 请记住:try/catch/finally 是一个同步结构:它可以捕获来自异步代码的异常。...如果失败了,或者决定不去捕获它,则异常可以在栈中冒泡。 从本质上讲,这还不错,但是在不同的环境下对未捕获的 rejection 的反应不同。...即使数组中的一个 Promise 拒绝,Promise.all 也会返回失败,而 Promise.any 总是提供第一个已解决的Promise(如果存在于数组中),无论发生了什么拒绝。...如果 rejection 出现在数组的第一个元素中,则 Promise.race 被拒绝,我们必须捕获它: const promise1 = Promise.resolve("The first!")
2、异常类型 通用异常类型表 异常 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception...操作系统错误 WindowsError 系统调用失败 ImportError 导入模块/对象失败 LookupError 无效数据查询的基类 IndexError 序列中没有此索引(index) KeyError...映射中没有这个键 MemoryError 内存溢出错误(对于Python 解释器不是致命的) NameError 未声明/初始化对象 (没有属性) UnboundLocalError 访问未初始化的本地变量...3、异常处理 3.1 触发异常raise raise关键字:手动抛出一个通用的异常类型(Exception),类似Java中的throw语句。...(1) print('Valid value' 执行结果: AssertionError: Invaild value 3.4 捕获异常try..except..else 注意:except子句的数量没有限制
1 什么是编程中的错误? 在我们的程序中,事物并非总是一帆风顺的。 特别是在某些情况下,我们可能希望 停止程序或在发生意外错误时通知用户。...如果这个异常 未捕获,即程序员没有采取任何措施来捕获它,则程序将崩溃。 在何时何地捕获代码中的异常取决于具体的用例。 例如,你可能想在堆栈中传播一个异常,以使程序完全崩溃。...如果我们失败了,或者决定不在这里捕获它,那么 异常就可以在堆栈中冒泡了。这本身并不坏,但是不同的环境对未捕获的拒绝的反应是不同的。...即使数组中只有一个 Promise 拒绝,Promise.all 也会返回失败;而 Promise.any 始终为我们提供第一个已解析的 Promise(如果存在于数组中),不管发生了什么拒绝。...如果 拒绝出现在数组的第一个元素中,则 Promise.race 拒绝,且我们必须捕获这个拒绝: const promise1 = Promise.resolve("The first!")
如果过程中出现错误,则将日志解密状态更改为解密失败。 但是在实际的项目使用过程中,发现系统中有很多问题,具体表现如下: 有些日志在上传很久以后,状态仍然为解密中。 日志会大量解密失败。...未捕获的异常, 未捕获的异常会导致进程退出并打印错误信息。...未兑现的承诺,未捕获的 Promise.reject 在高版本的 Node.js(v15 以后)会导致进程的退出,而在低版本不会。...未监听的错误事件,new EventEmitter().emit('error') 若没有监听 error 事件则会导致进程退出,处理方法同未捕获的异常 未处理的信号,在向进程发送信号时,若没有设置监听函数...未捕获的异常,使用 try { ... } catch (e) { } 对异常进行捕获,并且可以设置 process.setUncaughtExceptionCaptureCallback(fn) 可以在有未捕获异常时调用
如果我们失败了,或者决定不捕获它,异常可以在堆栈中自由冒泡。 使用 Promise 来处理定时器中的异常 使用定时器或事件无法捕获从回调引发的异常。...] 如果参数中 promise 有一个失败(rejected),此实例回调失败(reject),失败的原因是第一个失败 promise 的结果。...如果可迭代对象中没有一个 promise 成功(即所有的 promises 都失败/拒绝),就返回一个失败的 promise 和AggregateError类型的实例,它是 Error 的一个子类,用于把单一的错误集合在一起...Node.js中的任何事件驱动模块(例如net)都扩展了一个名为EventEmitter的根类。 Node.js中的EventEmitter有两种基本方法:on和emit。...在JavaScript程序中,可以通过多种方式来捕获异常。 同步代码中的异常是最容易捕获的。相反,异步中的异常需要一些技巧来处理。
try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。如果你不想在异常发生时结束你的程序,只需在try里捕获它。...如果引发了'name'异常,获得附加的数据else: #如果没有异常发生python标准异常----异常名称描述BaseException所有异常的基类SystemExit解释器请求退出...系统调用失败ImportError导入模块/对象失败LookupError无效数据查询的基类IndexError序列中没有此索引(index)KeyError映射中没有这个键MemoryError内存溢出错误...(对于Python 解释器不是致命的)NameError未声明/初始化对象 (没有属性)UnboundLocalError访问未初始化的本地变量ReferenceError弱引用(Weak reference...NotImplementedError尚未实现的方法SyntaxErrorPython 语法错误IndentationError缩进错误TabErrorTab 和空格混用SystemError一般的解释器系统错误TypeError
首先,检测try语句块中的错误,except语句捕获异常信息并处理。如果在try子句执行时没有发生异常,Python将执行else语句后的语句,然后控制流通过整个try语句。...如何捕获多个异常? 1.写出多行except 异常/错误,指定捕获多个不同类型的异常。2.使用 except (异常1,异常2..),使用元组,在一行中捕获多个不同类型的异常。...操作系统错误 WindowsError 系统调用失败 ImportError 导入模块/对象失败 LookupError 无效数据查询的基类 IndexError 序列中没有此索引(index) KeyError...映射中没有这个键 MemoryError 内存溢出错误(对于Python 解释器不是致命的) NameError 未声明/初始化对象 (没有属性) UnboundLocalError 访问未初始化的本地变量...NotImplementedError 尚未实现的方法 SyntaxError Python 语法错误 IndentationError 缩进错误 TabError Tab 和空格混用 SystemError 一般的解释器系统错误 TypeError
解决程序中遇到错误的核心操作 核心操作其实就是定位错误出现的行号,然后根据对代码执行前后的简单分析来定位出现错误的地方,简单的错误就可以直接修复;当然,某些情况下如果出现运行过程中可能会出现的错误,就是程序中的异常了...python中出现的所有的异常,都是直接或者间接继承自BaseException这个类的 3.1....异常处理的方式1——捕获异常 异常处理,python中是通过try-except语句代码块来执行处理的 try-except语句代码块处理异常通常有这样几种方式 使用try-except直接包含并处理所有异常...= int(n) # 可能出现异常 ValueError print("您输入的数字是:" + num1) # 可能出现异常TypeError except ValueError...OSError 操作系统错误 WindowsError 系统调用失败 ImportError 导入模块/对象失败 LookupError 无效数据查询的基类 IndexError 序列中没有此索引
Python标准异常 异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception...操作系统错误 WindowsError 系统调用失败 ImportError 导入模块/对象失败 LookupError 无效数据查询的基类 IndexError 序列中没有此索引(index) KeyError...try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。如果你不想在异常发生时结束你的程序,只需在try里捕获它。...你可以通过except语句来捕获异常的参数,如下所示: ? 变量接收的异常值通常包含在异常的语句中。在元组的表单中变量可以接收一个或者多个值。 元组通常包含错误字符串,错误数字,错误位置。...来源 | 脚本之家 原文链接:http://www.jb51.net/article/47996.htm
请求的编号,则返回 Promise() 响应,并承诺将不会接收编号小于 n 的提案。...1.S1 收到客户端提案请求 X,于是 S1 向 S1-S3 发起 Prepare(3.1) 请求,PROMISE() 响应返回没有提案被 Chosen2.由于 S1-S3 没有任何提案被 Chosen...,S1 继续向 S1-S3 发送 Accept(3.1, X) 请求,提案被成功 Chosen3.在提案被 Chosen 后,S5 收到客户端提案值为 Y 的请求,向 S3-S5 发送 Prepare(...请求,提案再次被 Chosen 情况 2:提案未 Chosen,Proposer 可见 ?...由于此时 S3 承诺的提案编号 n 变为了 4 且 4 大于 3,所以 S3 不再接受 S1 后续的 Accept(3.1, X) 请求。提案值 X 被阻止,而提案值 Y 最终被 Chosen。
领取专属 10元无门槛券
手把手带您无忧上云