public Single<User> saveUser(UserRequest userRequest) {
if(userRepository.findByEmail(userRequest.getEmail())!=null)
return Single.error(new DuplicateName(userRequest.getEmail()));
return Single.fromCallable(()->Mapper.mapRequestToUser(userRequest))
.map(user->userRepository.save(user.blockingGet()));
}
我抛出自己的错误-DuplicateName但RxJava将其包装成
ERROR 6740 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.omg.PortableInterceptor.ORBInitInfoPackage.DuplicateName: IDL:omg.org/PortableInterceptor/ORBInitInfo/DuplicateName:1.0] with root cause
org.omg.PortableInterceptor.ORBInitInfoPackage.DuplicateName: IDL:omg.org/PortableInterceptor/ORBInitInfo/DuplicateName:1.0
为什么会这样?我检查,如果我扔它通常像抛出新的DuplicateName()工作,我的全局拦截器处理它。
答案 0 :(得分:0)
返回Single.error
并不意味着抛出异常 - 它是向下游发送的终端事件,说明出现了问题,这种方法在RxJava中很普遍。
此类&#34;事件&#34;发送后,onError
方法会在观察者上调用 - 如果未实施此方法,则会将其OnErrorNotImplementedException
包裹起来。提供的日志并没有多说,但我认为在您的情况下onError
可以实现只记录异常。这可能是你的拦截器无法处理它的原因。您可以在RxJava here中阅读有关异常处理的更多信息。
答案 1 :(得分:0)
这是我的愚蠢错误。我有相同的错误名称
import org.omg.PortableInterceptor.ORBInitInfoPackage.DuplicateName;
而我错误地导入它并没有注意到.....
对于其他人,请确保您导入的所有内容都来自您自己的包。 Sory人们