簡體   English   中英

如何使用Retrofit2和RxJava2引發自定義異常

[英]How to throw custom exception with Retrofit2 and RxJava2

使用Retrofit2和RxJava2時,我會引發自定義異常的問題。

改裝Api定義

public interface BackendInterface {

    @Headers({"......"})
    @POST("international-services/")
    Observable<BackendResponse> post(@Body BackendRequest request, @Header("sessionId") String sessionId);
}

改裝API的用法

@Override
public Observable<SomeBusinessObject> getSomething(@NonNull String sessionId, @NonNull SomeOtherBusinessObject something) {
    BackendRequest br = createBackendRequest(something);
    return backendInterface.post(br, sessionId).map(backendResponse -> {

        if (backendResponse.getResult().getCode() != 0) {
            return Observable.error(new ServiceException("my custom exception"));
        }

        SomeBusinessObject result = mapBusinessObject(br);
        return result;
    });
}

問題是以下行

return Observerable.error(new ServiceException("my custom exception"));

Android Studio將其標記為錯誤,並說“不存在類型為y的實例,因此Observable符合SomeBusinessObject推斷變量R具有不兼容的界限:等式約束:SomeBusinessObject的下界:Observable

IDE的快速修復建議使我的方法“ getSomething”返回Observable。

我不知道如何將自定義異常轉發給我的可觀察者。

您的.map試圖返回SomeBusinessObject以及Observable<"SomeType"> 由於它們沒有公共的父對象,因此無法解析Observable.error()應該返回的內容。

它使用.flatmap代替並將return替換為return Observable.just(result);的解決方案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM