Proč vavr zkusit kontejnerové úlovcích Throwable ale nikoliv výjimka?

hlasů
0

Nejsem odborník v systému typu java a zpracování výjimek. Ale našel jsem v tom, že bychom měli zachytit jen výjimky, ale ne Throwable to.

Zde je odkaz: rozdíl mezi použitím Throwable a výjimka v try catch

V knihovně Vavr to jsem našel tento zdrojový kód:

public interface Try<T> extends Value<T>, Serializable {
long serialVersionUID = 1L;

static <T> Try<T> of(CheckedFunction0<? extends T> supplier) {
    Objects.requireNonNull(supplier, supplier is null);

    try {
        return new Try.Success(supplier.apply());
    } catch (Throwable var2) {
        return new Try.Failure(var2);
    }
}

Bych mít nějaké problémy v budoucnu, pokud budu používat tento obal? Bude mi chybí některé zásadní výjimky, které mohou nastat v průběhu výkonu funkce ‚z‘?

Položena 02/12/2019 v 23:56
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
2

ThrowableJe supertřídou Exception, což znamená, catch (Throwable var)úlovky Výjimky stejně. Proto kód v vavr je správný - vždy, když je některý Throwablehozen bude zabalené v Try.Failure.

Odpovězeno 03/12/2019 v 00:00
zdroj uživatelem

hlasů
1

Všimněte si, co je odpověď říká v propojeném post:

Obecně byste měli to udělat, snad jen na nejvyšší „chytit všechny“ úroveň závitu, kde se chcete přihlásit, nebo jinak s nimi manipulovat naprosto vše, co se může pokazit .

Důraz důl.

Že je zde pravděpodobný záměr. To je tryobal určen pro manipulaci všechno a nechat uživatele rozhodnout, co chtějí řešit a jak na to. Zdá se, že jdou na konstruktu, jako je Scala je Try, aby vám zvládnout výjimky, aniž by ručně chytat. Za to pracovat a být konzistentní, vše by mělo být zacházeno stejným způsobem, nebo budeš mít nějaké výjimky, které potřebují být chycen, a další, které jsou zpracovány jako tato třída má v úmyslu.

pokud jde o

Bude mi chybí některé zásadní výjimky, které mohou nastat v průběhu výkonu funkce ‚z‘?

Nebude chybět. Oni se vrátí zabalený v Try.Failurea s nimi můžete manipulovat pak po obdržení chyby.

Odpovězeno 03/12/2019 v 00:01
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more