- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 completable
时出现 UndeliverableException
public Completable createBucketWithStorageClassAndLocation() {
return Completable.complete()
.doFinally(() -> {
Bucket bucket =
storage.create(
BucketInfo.newBuilder(googleUploadObjectConfiguration.bucketName())
.setStorageClass(storageClass)
.setLocation(googleUploadObjectConfiguration.locationName())
.build());
}).doOnError(error -> LOG.error(error.getMessage()));
}
异常是从 Google 存储中抛出的,这是正确的,但试图处理
doOnError
方法
Caused by: com.google.cloud.storage.StorageException: You already own this bucket. Please select another name.
RXJava 异常
io.reactivex.exceptions.UndeliverableException: The exception could not be delivered to the consumer because it has already canceled/disposed the flow or the exception has nowhere to go to begin with. Further reading: https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling | com.google.cloud.storage.StorageException: You already own this bucket. Please select another name.
at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:367)
at io.reactivex.internal.operators.completable.CompletableDoFinally$DoFinallyObserver.runFinally(CompletableDoFinally.java:99)
at io.reactivex.internal.operators.completable.CompletableDoFinally$DoFinallyObserver.onComplete(CompletableDoFinally.java:79)
at io.micronaut.reactive.rxjava2.RxInstrumentedCompletableObserver.onComplete(RxInstrumentedCompletableObserver.java:64)
at io.reactivex.internal.disposables.EmptyDisposable.complete(EmptyDisposable.java:68)
at io.reactivex.internal.operators.completable.CompletableEmpty.subscribeActual(CompletableEmpty.java:27)
at io.reactivex.Completable.subscribe(Completable.java:2309)
at io.micronaut.reactive.rxjava2.RxInstrumentedCompletable.subscribeActual(RxInstrumentedCompletable.java:51)
at io.reactivex.Completable.subscribe(Completable.java:2309)
at io.reactivex.internal.operators.completable.CompletableDoFinally.subscribeActual(CompletableDoFinally.java:43)
at io.reactivex.Completable.subscribe(Completable.java:2309)
at io.micronaut.reactive.rxjava2.RxInstrumentedCompletable.subscribeActual(RxInstrumentedCompletable.java:51)
at io.reactivex.Completable.subscribe(Completable.java:2309)
at io.reactivex.internal.operators.completable.CompletablePeek.subscribeActual(CompletablePeek.java:51)
at io.reactivex.Completable.subscribe(Completable.java:2309)
at io.micronaut.reactive.rxjava2.RxInstrumentedCompletable.subscribeActual(RxInstrumentedCompletable.java:51)
at io.reactivex.Completable.subscribe(Completable.java:2309)
at io.reactivex.Completable.subscribe(Completable.java:2410)
at fete.bird.StartUp.onApplicationEvent(StartUp.java:24)
at fete.bird.StartUp.onApplicationEvent(StartUp.java:12)
at io.micronaut.context.DefaultBeanContext.notifyEventListeners(DefaultBeanContext.java:1323)
at io.micronaut.context.DefaultBeanContext.publishEvent(DefaultBeanContext.java:1308)
at io.micronaut.http.server.netty.NettyHttpServer.fireStartupEvents(NettyHttpServer.java:507)
at io.micronaut.http.server.netty.NettyHttpServer.start(NettyHttpServer.java:350)
at io.micronaut.http.server.netty.NettyHttpServer.start(NettyHttpServer.java:113)
at io.micronaut.runtime.Micronaut.lambda$start$2(Micronaut.java:77)
at java.base/java.util.Optional.ifPresent(Optional.java:176)
at io.micronaut.runtime.Micronaut.start(Micronaut.java:75)
at io.micronaut.runtime.Micronaut.run(Micronaut.java:311)
at io.micronaut.runtime.Micronaut.run(Micronaut.java:297)
at fete.bird.FeteBirdServiceApplication.main(FeteBirdServiceApplication.java:16)
来自 rxjava 文档
https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling我需要处理应用程序中的错误。
/ If Java 8 lambdas are supported
RxJavaPlugins.setErrorHandler(e -> { });
我的问题是我应该在哪里写这段代码。我有一个使用 java 的 Micronaut 应用程序,或者这是处理异常的唯一方法。
最佳答案
使用 Completable.fromAction
也许 try catch 异常而不是 doFinally
装置:
Completable.fromAction(() -> {
try {
Bucket bucket = storage.create(
BucketInfo.newBuilder(googleUploadObjectConfiguration.bucketName())
.setStorageClass(storageClass)
.setLocation(googleUploadObjectConfiguration.locationName())
.build());
} catch (Throwable error) {
LOG.error(error.getMessage());
}
})
关于java - io.reactivex.exceptions.UndeliverableException 异常无法传递给消费者,因为它已经取消/处置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66576755/
我想从树中创建一个可观察对象。每个节点都会生成一个依赖于其父节点的可观察对象(例如通过 switchMap)。在树的每一层,每个 child 的可观察值都需要合并。 我想转换这段代码,以便它使用可观察
RxJS Observables 是可以随时间同步或异步返回零到无限值的函数。 但是异步行为究竟是如何实现的呢?它是以某种方式使用单独的线程,还是使用 Web API 和 JS 事件循环? 最佳答案
我正在学习 Rx(尤其是 RxSwift),我对架构、层和边界有疑问。 我习惯于分层架构(数据、域、表示),通常是在 MVP 或 VIPER 上。对于这个项目,我使用的是 MVVM,这是 Reacti
我正在使用 Rx.Net 并且我有 Observable 发出时间序列点( double ,时间戳)。每次新点到达时,我想计算过去 30 秒的平均值。我想我需要某种不是基于计数而是基于时间戳的重叠窗口
public class ReactiveExample { public static void main(String[] args) throws InterruptedExceptio
我正在尝试制作带有背压的流动性。我的想法是,在当前项目之一完成处理之前,不会发出新的可流动项目。我正在使用 ResourceSubscriber 和 subscribeWith() 方法来实现这一点。
我很好奇谁开始了 ReactiveX/RxJS? Rx 似乎在很多语言/平台中实现,我很好奇它的起源是什么?首先是哪个项目? RxJS 在 Angular Web 框架中大量使用。它背后是否有像微软、
我试图使用 RxJava 来理解 ReactiveX,但我无法理解整个 Reactive 的想法。我的案例如下: 我有 Task 类。它有 perform() 方法,该方法执行 HTTP 请求并通过
我如何利用 ReactiveX按顺序执行异步调用?即,在第一个调用完成后执行第二个调用。 更具体地说,我正在使用 RxSwift在 iOS 中,我想链接在一起的异步是 UIView 动画(而不是在第一
我在我的 iOS 应用程序中使用 RxSwift 进行缓存,并且有一段这样的代码: let observable = Observable.of(cache.getItem(itemID), netw
我正在使用 ReactiveX在 iOS/Swift 中(RxSwift)。 假设我有一个可观察对象: let dataUpdates = ... 我订阅的: dataUpdates.subscrib
我正在学习 ReactiveX。我删除了错误检查、日志记录和其他部分,以便于阅读。 我有一个以 JSON 格式返回对象集合的服务: getPanels() { return this.http
寻找一种干净的方式来转换源 Observable发出单个 null (或哨兵值)在一段时间内不发射项目后。 例如,如果源 observable 发出 1, 2, 3然后停止发射 10 秒,然后发射 4
我想知道在 Rx 中解决以下问题的规范方法是什么:假设我有两个可观察对象,mouse_down和 mouse_up ,其元素表示鼠标按钮按下。在一个非常简单的场景中,如果我想检测长按,我可以通过以下方
我在创建以下可观察值时遇到问题。 我希望它接收预定义的值数组 我想按不同的事物进行过滤,并能够将它们作为单独的可观察值进行处理。 然后,当需要合并这些过滤后的可观察值时,我想保留原始观察值的顺序 //
我有一个 Observable .我想把它变成一个 Map它告诉我每个不同字符串的出现次数。 Observable 包含约 10 亿个元素,其中 1000 个是不同的(因此不能将整个数据集存储在 RA
swipeRefreshLayout.setOnRefreshListener(() -> { swipeRefreshLayout.setRefreshing(true); retrieveDa
我是 ReactiveX 的新手。我是通过阅读源代码来学习它的。一切都那么清晰,但突然间我得到了一个名为“Consumer”的词,它是一个接口(interface)。它被用来代替观察者。 谁能告诉我它
如何在不使用任何加载器的旧 javascript 应用程序中加载 RxJS? 对于 RxJS 4.x,我可以简单地这样做: RxJS 5 怎么样?他们的文档假设您正在使用某种类型的加载器来处理所有事
我正在寻找一个与 debounce(ms) 类似的运算符,但它触发第一个事件,然后等待 ms 然后触发第一个事件,依此类推上。 基本上,我想过滤发生时间非常接近的事件(就时间而言),但不是等到最后一个
我是一名优秀的程序员,十分优秀!