Pourquoi Essayez les prises de conteneurs vavr Throwable mais pas d'exception?

voix
0

Je ne suis pas un expert dans le système de type java et la gestion des exceptions. Mais je l'ai trouvé en sorte que nous ne devrions prendre des exceptions, mais pas pour throwable.

Voici le lien: différence entre l' utilisation et Throwable exception dans une prise d'essai

Dans la bibliothèque de Vavr j'ai trouvé ce code source:

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

Aurais-je des problèmes à l'avenir si je vais utiliser ce conteneur? Est-ce que je manque quelques exceptions critiques qui peuvent se produire lors de l'exécution de la fonction « de »?

Créé 02/12/2019 à 23:56
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
2

Throwableest une superclasse de Exception, ce qui signifie des catch (Throwable var)captures exceptions. Par conséquent , le code dans vavr est correct - chaque fois qu'il ya une Throwablejetée , il sera enveloppé dans un Try.Failure.

Créé 03/12/2019 à 00:00
source utilisateur

voix
1

Notez que la réponse dans le poste lié dit:

Vous devez généralement pas le faire, sauf peut - être au plus haut « fourre - tout » niveau d'un fil où vous voulez vous connecter ou autrement gérer absolument tout ce qui peut aller mal .

souligné dans l'original.

C'est probablement l'intention ici. Ceci est un tryemballage destiné à gérer tout et laisser l'utilisateur décider ce qu'ils veulent traiter et comment. Il semble qu'ils vont pour une construction comme Scala Trypour vous permettre de gérer les exceptions sans les attraper manuellement. Pour que travailler et être cohérent, tout doit être traité de la même façon, ou vous auriez quelques exceptions devant être pris, et d' autres qui sont traités comme cette classe entend.

Pour ce qui est de

Est-ce que je manque quelques exceptions critiques qui peuvent se produire lors de l'exécution de la fonction « de »?

Vous ne les manquez pas. Ils sont retournés enveloppés dans un Try.Failure, et vous pouvez les gérer ensuite après avoir reçu l'erreur.

Créé 03/12/2019 à 00:01
source utilisateur

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