Java >> Java tutorial >  >> Tag >> final

Hvordan omgrupperer man endelig catch til én metode i java 8?

Afhænger af, hvad du gør i ... . Du kunne gøre noget som dette:

private Response method(Supplier<Response> supplier) {
    try{
        return supplier.get();
    } catch (Exception e) {
        codeA;
    } finally {
        codeB;
    }
}

og påkald som:

public Response create() { return method(() -> { ... for create }); }
public Response update() { return method(() -> { ... for update }); }

Du kan pakke din payload og sæt det til den separate metode. En ting; hvad forventer du at give tilbage ved undtagelsesfangst. Denne gang er det null , men sandsynligvis kunne du angive standardværdi.

public static <T> T execute(Supplier<T> payload) {
    try {
        return payload.get();
    } catch(Exception e) {
        // code A
        return null;
    } finally {
        // code B
    }
}

Klientkode kunne se sådan ud:

public Response create() {
    return execute(() -> new CreateResponse());
}

public Response update() {
    return execute(() -> new UpdateResponse());
}

Java tag