Waarom vAvR proberen container vangsten Throwable maar niet uitzondering?

stemmen
0

Ik ben geen expert op het gebied van Java typesysteem en exception handling. Maar ik vond in, zodat we alleen uitzonderingen maar niet throwable dient te vangen.

Hier is de link: verschil tussen het gebruik Throwable en Uitzondering in een try catch

In vAvR de bibliotheek vond ik deze bron code:

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);
    }
}

Zou ik heb geen problemen in de toekomst als ik deze container zal gaan gebruiken? Zal ik mis een aantal kritische uitzonderingen die kunnen optreden tijdens het uitvoeren van 'of' functie?

De vraag is gesteld op 02/12/2019 om 23:56
bron van user
In andere talen...                            


2 antwoorden

stemmen
2

Throwableeen superklasse van Exception, waardoor catch (Throwable var)vangst uitzonderingen ook. Daarom is de code vAvR correct - wanneer er wordt Throwablegegooid zal worden verpakt in een Try.Failure.

antwoordde op 03/12/2019 om 00:00
bron van user

stemmen
1

Let op wat het antwoord in het gekoppelde bericht zegt:

U dient in het algemeen niet doen, behalve misschien op het allerhoogste "catch all" niveau van een draad waar je wilt om in te loggen of andere wijze in aanraking absoluut alles wat er mis kan gaan .

Mijn cursivering.

Dat is hier waarschijnlijk de bedoeling. Dit is een trywrapper bedoeld om te verwerken alles en laat de gebruiker beslissen wat ze willen behandelen en hoe. Het lijkt erop dat ze gaan voor een constructie zoals Scala's Tryom u te laten uitzonderingen behandelen zonder ze handmatig te vangen. Om dat te werken en consistent zijn, alles moet op dezelfde manier worden behandeld, of dat u enkele uitzonderingen hoeft te worden gevangen, en anderen die worden behandeld als deze klasse van plan zou moeten.

zoals voor

Zal ik mis een aantal kritische uitzonderingen die kunnen optreden tijdens het uitvoeren van 'of' functie?

Je zult ze niet missen. Ze worden teruggestuurd verpakt in een Try.Failure, en je kunt ze verwerken dan na ontvangst van de fout.

antwoordde op 03/12/2019 om 00:01
bron van user

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