gpt4 book ai didi

error-handling - 发生错误时执行操作RxJava

转载 作者:行者123 更新时间:2023-12-03 08:49:48 26 4
gpt4 key购买 nike

我需要创建一个不存在的文件夹。就我而言,唯一的方法是捕获错误并处理该错误以创建所需的文件夹。
但是我所能找到的是

public static Observable<Boolean> folderExists(final Context context, final String targetPath, final String currentpath) {
Application application = Application.get(context);
//i browse the folder to get all the items
return browseFolderObservable(context,currentpath)
.subscribeOn(application.defaultSubscribeScheduler())
.doOnError(new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
BsSdkLog.d("Error no file found");
}
})

.map(new Func1<ArrayList<Item>, Boolean>() {
@Override
public Boolean call(ArrayList<Item> items) {

if(items.isEmpty()) {

BsSdkLog.d(" No items");
return false;
}else {
for(int i=0;i<items.size();i++)
{
Item item=items.get(i);
BsSdkLog.d(item.toString());
}
BsSdkLog.d("Right-here");
return true;

}
}
});


}

我想调用发生错误时创建文件夹的方法,但是我不知道该怎么做。
我是新手,所以我非常感谢您的帮助
谢谢

最佳答案

基本的原理看起来像这样。我使用Java NIO库进行测试。

方法“createFolder”只是包装创建一个文件夹。测试“名称”将调用Single并检查异常。如果它是IOException,则将返回一个后备值。您可能在其中做了一些不同的事情。您只提供一个备用单。如果是与IOException不同的错误,它将返回该错误。

@Test
void name() throws Exception {
final String TO_CREATE = "/home/sergej/Downloads/Wurstbrot";
this.createFolder(TO_CREATE)
.onErrorResumeNext(throwable -> { // handle Exception:
// Validate Exception
if (throwable instanceof IOException) {
// Return fallback
return Single.just(Paths.get("/home/sergej/Downloads/"));
}

return Single.error(throwable);

})
.test()
.await()
.assertValueCount(1)
.assertValue(path -> path.endsWith(TO_CREATE))
.assertNoErrors();

}

private Single<Path> createFolder(String p) {
return Single.defer(() -> { // may throw some IOException

Path path = Paths.get(p);

if (!Files.exists(path)) {
Path createdDirectory = Files.createDirectory(path); // will throw if already exists

return Single.just(createdDirectory);
}

// Or just return Path, because it already exists???
return Single.error(new IOException("Already exists"));
});
}

关于error-handling - 发生错误时执行操作RxJava,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43755457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com