Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Completable.blockingAwait()时捕获异常_Java_Reactive Programming_Rx Android_Rx Java2 - Fatal编程技术网

Java 使用Completable.blockingAwait()时捕获异常

Java 使用Completable.blockingAwait()时捕获异常,java,reactive-programming,rx-android,rx-java2,Java,Reactive Programming,Rx Android,Rx Java2,我最近开始使用RXJava2,我想知道在调用时是否可能捕获更具体的异常 这就是我正在做的: 试试看{ 创建(新的CompletableSubscribe(){ @凌驾 public void subscribe(@NonNull completablee)引发异常{ e、 onError(新IOException()); } }).阻塞等待(); }捕获(运行时异常e){ 可丢弃的原因=e.getCause(); 如果(导致IOException实例){ //处理IOException } }

我最近开始使用RXJava2,我想知道在调用时是否可能捕获更具体的异常

这就是我正在做的:

试试看{
创建(新的CompletableSubscribe(){
@凌驾
public void subscribe(@NonNull completablee)引发异常{
e、 onError(新IOException());
}
}).阻塞等待();
}捕获(运行时异常e){
可丢弃的原因=e.getCause();
如果(导致IOException实例){
//处理IOException
}
}
这就是我想做的:

试试看{
创建(新的CompletableSubscribe(){
@凌驾
public void subscribe(@NonNull completablee)引发异常{
e、 onError(新IOException());
}
}).阻塞等待();
}捕获(IOE异常){
//处理IOException
}

有没有可能做到这一点?

在链接的Javadoc下面的几行中,有一个操作符返回一个
可丢弃的
,您可以使用它执行
instanceof
检查:

 Throwable err = Completable.error(new IOException()).blockingGet();
 if (err instanceof IOException) {
     // ...
 }

因此,为了区分返回/抛出的异常,我必须使用
instanceof
?我是对的,as没有其他选项来捕获
RuntimeException
并使用
instanceof
进行错误处理?
blockingGet
不会抛出,手动抛出返回的错误看起来有点尴尬。