Java io.reactivex.exceptions.UndeliverableException无法将异常传递给使用者,因为它已取消/处置

Java io.reactivex.exceptions.UndeliverableException无法将异常传递给使用者,因为它已取消/处置,java,rx-java,rx-java2,reactivex,rx-java3,Java,Rx Java,Rx Java2,Reactivex,Rx Java3,使用completable public Completable createBucketWithStorageClassAndLocation() { return Completable.complete() .doFinally(() -> { Bucket bucket = storage.create( Bucke

使用
completable

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存储中抛出的,这是正确的,但正在尝试处理
doError
方法

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文档中,我需要处理应用程序中的错误

我需要写下面的代码

/ If Java 8 lambdas are supported
RxJavaPlugins.setErrorHandler(e -> { });

我的问题是我应该在哪里写这段代码。我有一个使用java的Micronaut应用程序,或者这是处理异常的唯一方法。

使用Completable.fromAction,或者尝试捕获异常,而不是
doFinally
装置:

Completable.fromAction(()->{
试一试{
Bucket=storage.create(
BucketInfo.newBuilder(googleUploadObjectConfiguration.bucketName())
.setStorageClass(存储类)
.setLocation(googleUploadObjectConfiguration.locationName())
.build());
}捕获(可丢弃错误){
LOG.error(error.getMessage());
}
})

是否有其他方法来捕获异常而不是尝试捕获?您可以使用
onErrorResumeNext()
将故障转换为其他可完成的