如何仅捕获特定类型的异常而不中止序列

2024-02-14

RxJs 似乎没有变体catch()方法只允许捕获特定类型的异常。但很多时候我发现自己处于需要这样的操作员的情况。

例如,成像我需要解析日志文件的每一行并打印解析的消息。日志文件的某些行可能已损坏,但我真的不在乎,只想为此类行输出“日志消息已损坏”并继续下一行。

If catch()确实允许我们指定特定类型的错误来捕获并传递所有其他错误,然后我们可以执行如下伪代码之类的操作

readLogs()
.flatMap parseLog
.catchOnly ParseError, () ->
  'Log message corrupted'
.subscribe (logMessage) ->
  console.log logMessage

我想知道考虑到当前的限制,RxJs 执行此操作的正确方法是什么catach().


你需要筑巢catch为了防止错误终止整个链,您需要将逻辑分开分裂 and parsing lines:

import {of, throwError} from 'rxjs'
import {flatMap, map, catchError} from 'rxjs/operators'



function handleErrors(e) {
    return (e instanceof ParseError) ? 
            of("Log message corrupted") : throwError(e);
}

readLogs().pipe(
  flatMap(splitLines)
  flatMap(line => 
    of(line).pipe(
      map(parseLine), 
      catch(handleErrors)
    )
  )
)
.subscribe(
  parsedLine => console.log(parsedLine),
  e => console.error('Fatal error: ' + e);
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何仅捕获特定类型的异常而不中止序列 的相关文章

  • 如何让 Angular 2 选择动态添加的 routerLink 指令

    正如所见这个笨蛋 https plnkr co edit K906Y8KtkgYVgAIsCLqE p preview 我动态地将 HTML 添加到我的一个元素中 这可以归结为 Component selector my comp temp
  • typescript 类型最大递归限制为 9

    我终于成功创建了一个通用类型 它为我提供了 json 键列表 值的所有可能组合 我什至准备了一种限制递归的方法 type EditAction
  • Nightmare.js 截图缓冲区长度 0

    我正在运行一个 night js 脚本 我试图在其中截取页面上多个元素的屏幕截图 The first元素被捕获得很好 但折叠下方的所有其他元素都以零长度捕获 我正在努力调试这个问题 任何帮助将非常感激 基本上这个脚本会遍历一个页面并选择al
  • Java 的 React Typescript API 类型 byte[] image/png

    我正在将其转换为我们的 React Web 应用程序的 Typescript 服务 下面是 Java 中的原始 API Typescript 响应数据类型是什么 斑点 GET Path vendorId Photo Produces ima
  • typescript 中的重载签名和实现签名

    我正在阅读 Typescript 手册 我很难理解为什么以下代码片段有错误消息 function fn x string void function fn vo Expected to be able to call with zero a
  • Javascript 对象属性名称

    在 C 中 可以将对象属性的名称作为字符串值获取 名称 对象 Property gt myProperty 这可以在 Javascript Typescript 中完成吗 Object Keys 是我找到的唯一东西 但它给了我所有的键 示例
  • 如何将 Observables 数组与 RxJS 6.x 和 Node.js 合并?

    出于学习目的 我正在创建一个 Node 应用程序 该应用程序需要从数组中获取 x RxJS 可观察值并将其组合成单个事件流 我想知道事件何时以任何可观察的方式 以任何顺序发生 不是以任何顺序或完全完成 我觉得它应该在一个合并的事件流中 基本
  • 使用函数重载进行解构

    我正在尝试创建一个函数 该函数需要一对坐标或一个对象x and y属性并返回邻居列表 但由于某种原因 即使我检查了它的类型 我也无法解构该对象 interface Coords x number y number public getNei
  • 从 Angular 6 中的 html 导出 Pdf

    我想从 Angular 6 中的 html 导出 pdf 所以 我正在使用jspdf图书馆 但我不能给出颜色和背景颜色等样式 我怎样才能实现这个目标 如果有其他免费图书馆jspdf 我可以用它 您可以从下面的链接查看演示 DEMO http
  • 如何让 Typescript 获取声明文件?

    My file src auth ManagementAPI ts使用 Auth0 我需要使用自己的声明文件并创建src types auth0 d ts 然而 当我跑步时ts node 我收到此错误 TSError Unable to c
  • 在打字稿中获取类的键

    我有一个包含很多方法的类 我们称之为 myClass 我这样称呼它 myClass key 有没有办法从 key 获取可能的值 我希望有类似 keyof myClass 的东西 但我得到 myClass 引用一个值 但在这里被用作类型 问题
  • 使用 rxjs 将数据添加到 http 响应

    我有一个包含司机 ID 的旅行实体 我可以使用 RESTFull 端点获取获取行程 例如 trips 2 example response id 2 driver id 123 我可以使用端点获取驱动程序详细信息 例如 drivers 12
  • 错误 TS2314:通用类型“Component”需要 2 个类型参数

    在将 ReactJS 与 TypeScript 一起使用时 会出现以下错误 error TS2314 Generic type Component
  • 找不到本地“typescript”包。“@ngtools/webpack”包 Angular 2

    我在这里搜了一下 Angular 2 ngtools webpack AOT https stackoverflow com questions 42651383 angular 2 ngtools webpack aot 但对我不起作用
  • 对自定义打字稿错误实例实施instanceof检查?

    打字稿有这个instanceof 检查自定义错误 https github com Microsoft TypeScript issues 13965问题 但尚不清楚我们需要做什么才能得到instanceof在职的 例如对于这个异常我们如何
  • 如何使用 rxpy/rxjs 延迟事件发射?

    我有两个事件流 一个来自电感环路 另一个来自网络摄像机 汽车将驶过环路 然后撞上相机 如果事件彼此相差在 N 毫秒内 汽车总是会首先进入循环 我想将它们组合起来 但我也希望每个流中不匹配的事件 硬件可能会失败 全部合并到单个流中 像这样的事
  • Rxjs 可观察等待直到满足某些条件

    我有以下重试逻辑来重试操作 对于单个请求来说它工作得很好 对于多个正在进行的请求 我想在重试之前等待现有的重试逻辑完成 handleError errors Observable
  • 使用 createReducer 函数时构建用于生产的 Angular+ngrx 8 时出错

    目前我正在尝试使用新的 NgRX 构建 Angular NgRX 8 应用程序creator功能 但是当我构建这个用于生产时 出现以下错误 装饰器中不支持函数调用 但在 reducers 中调用了 createReducer 在开发模式下完
  • Typescript:匿名函数内可能未定义的变量

    太长了 在匿名函数中使用变量之前检查变量仍然 TS 警告变量可能未定义 在下面的代码示例中变量baseDirId检查是否未定义 然后传递给 array map 函数 但 TS 发出警告baseDirId可以是未定义的 Typescript
  • 如何修复 Typescript 中的“以下属性中缺少类型‘{}’...”错误?

    我是 Typescript 新手 因此遇到了问题 我正在使用 Ant Design 并遵循如何在 Typescript 中使用 Form 但使用FunctionComponent 但是 我收到 Typescript 抛出的错误 TypeSc

随机推荐

  • Selenium 在 JS 中使用 async/await,查找并单击元素

    我正在尝试使用 Selenium webdriver 和 Mocha 将我的测试重构为具有异步 等待功能的 ES7 我有以下代码 await loginPage loginAsAdmin THIS DOES NOT WORK await l
  • 多数据库应用程序的访问控制

    我有一个 mainDB nsf 其中包含所有 XPage 设计 代理 脚本库等 用户从该数据库中选择一个应用程序 可能存在一个或多个应用数据库 每个应用程序数据库都包含应用程序的实际数据 以及在 mainDB 中的自定义控件中访问的数据的视
  • 如何使用请求的第一个字母使用 .htaccess 重写缓存子目录?

    我有一个缓存程序 可以创建动态生成的 php 文件的静态 html 文件 我目前使用 php 来检查缓存版本是否存在 如果存在 我将其提供并退出 正如在这个问题 http stackoverflow com questions 561273
  • 如何在sklearn中实现n次重复的k折交叉验证以产生n*k折?

    I got some trouble in implementing a cross validation setting that i saw in a paper Basically it is explained in this at
  • 如何将 webpack 与 create-react-app 一起使用?

    我创建了一个创建反应应用程序 https github com facebook create react app项目遵循create react app 提供的文档 https facebook github io create reac
  • 彩色变音符号和 unicode 行为

    我只是偶然发现这个关于着色变音符号的问题 https stackoverflow com questions 23537441 how to display accents over words with different colors
  • 如何备份/移动 LXC 容器?

    我想要 lxc 容器备份 我们有服务器12 04 LTS ubuntu server我已经安装了LXC 1 0 0 alpha2在里面 我想将我们的 ubuntu 服务器更新到 14 04 LTS 所以我想做的是备份 LXC 容器 gt 将
  • Java/Swing 中的翻书

    你们都看过那些基于 Flash 的翻页书 我想用 Java 创建同样的东西 我使用 JTextArea 作为书的叶子 我想知道的是如何通过重写与 Mouse KeyListener 相结合的 componentPaint 方法来实现翻页效果
  • Perl的@INC是如何构造的? (又名影响 Perl 模块搜索位置的所有方法是什么?)

    影响 Perl 模块搜索位置的方式有哪些 或者 Perl的 INC是如何构造的 据我们所知 Perl 使用 INC包含目录名称的数组 用于确定在哪里搜索 Perl 模块文件 https stackoverflow com questions
  • 如何有条件地将服务注入组件?

    我有2个服务one service ts and two service ts 和一个组件dashboard component ts 如何有条件地将这些服务注入到组件中 import Component ViewEncapsulation
  • Linq VAR 和类型化对象

    我想要一个代码示例 目前我在 c 和 asp net 4 ef4 中使用 linq var querySlotOrder from slot in context CmsSlots where slot SlotId myCurrentSl
  • Sublime Text 的缩进错误

    我正在尝试使用 Sublime Text 3 for HTML 中的自动缩进功能 我在 html 中有一些块注释 选择 编辑 gt 行 gt 重新缩进 可以正常工作 直到遇到块注释 尝试重新缩进此处的示例 table tr td Cell
  • imagecreatefromjpeg 和类似的函数在 PHP 中不起作用

    我已经搜索过了 过去的问题中提供的解决方案对我来说完全无法理解 每当我运行类似的函数时imagecreatefromjpeg 我明白了 致命错误 调用未定义的函数 imagecreatefromjpeg 我正在安装新的 PHP 我上次安装从
  • 异步和等待 - 如何维护执行顺序?

    我实际上正在阅读一些有关任务并行库以及使用 async 和 wait 进行异步编程的主题 C 5 0 in a Nutshell 一书指出 当使用await关键字等待表达式时 编译器会将代码转换为如下所示 var awaiter expre
  • dplyr:按组查找每个 bin 的平均值

    我正在尝试理解 dplyr 我按组 箱和符号拆分数据框中的值 并且尝试获取每个组 箱 符号组合的平均值 我想输出一个数据框 其中包含每个组 箱 符号组合的这些计数以及每个组的总数 我想我有它 但有时与 ddplyr 的输出相比 我在基本 R
  • 在 Oracle PL/SQL 中,有什么方法可以导入包及其成员吗?

    给定一个包 create or replace package foo as f1 number 1 end 代替 declare begin dbms output put line f1 foo f1 end 我想写 declare b
  • 由于 DelegateCommand 而导致 WPF 应用程序内存泄漏

    我刚刚使用 MVVM 模式完成了用 WPF 和 C 编写的桌面应用程序 在此应用程序中 我使用 Delegate Command 实现来包装 ModelView 中公开的 ICommands 属性 问题是这些 DelegateCommand
  • Firebase 身份验证和数据库[重复]

    这个问题在这里已经有答案了 我对 Firebase 有疑问 我是新手 我想在登录时返回用户名 但该名称在数据库中 我只想返回名称 当然 与身份验证中找到的电子邮件一致 该电子邮件也在数据库中 我的想法是将数据库中的电子邮件与身份验证进行比较
  • 为什么在宏定义中使用 do { } while (0) ? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么 C C 宏中有时会出现无意义的 do while 和 if else 语句 https stackoverflow com questions 154136 why are there som
  • 如何仅捕获特定类型的异常而不中止序列

    RxJs 似乎没有变体catch 方法只允许捕获特定类型的异常 但很多时候我发现自己处于需要这样的操作员的情况 例如 成像我需要解析日志文件的每一行并打印解析的消息 日志文件的某些行可能已损坏 但我真的不在乎 只想为此类行输出 日志消息已损