Java 使用Completable.blockingAwait()时捕获异常
我最近开始使用RXJava2,我想知道在调用时是否可能捕获更具体的异常 这就是我正在做的: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 } }
试试看{
创建(新的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
不会抛出,手动抛出返回的错误看起来有点尴尬。