• [^] # Re: En vrac

    Posté par . En réponse au journal Pourquoi empaqueter KDE prend-il du temps ?. Évalué à 4.

    Dépend du type des valeurs que tu additionnes. Si ce sont des entiers, non. Si ce sont des std::string, oui. Quand on utilise un type, on est censé savoir ce que ça implique. Même si j'avoue que je trouve très dommage le fait que l'on ait pas de moyen automatisé de savoir si une exception peut être lancée sans jamais être interceptée (en C++) ainsi que le fait que l'on ne puisse pas préciser quelles exceptions peuvent être lancées par une fonction.

    Tu es alors dépendant de la documentation de ce que tu utilise, ce n'est plus le langage qui t'aide.

    Pour le coup, j'ai une question sur Java: quand on déclare une fonction qui appelle des fonction qui peuvent lancer, il faut déclarer qu'elle peut lancer les exceptions des fonctions qu'elle appèle ou non?

    Bien sûr comment voudrait-tu faire autrement ? Si tu as 2 méthode fa et fb et que fa appel fb et que fb lève une FooException, si fa ne gère pas l'exception de fb il doit impérativement la déclarer. Sinon un code qui appel fa ne pourrait pas savoir qu'il risque de prendre une FooException.

    Si c'est le cas, n'est-ce pas trop lourd?

    Je trouve pas, il faut raisonner en top-down. Commence par déterminer ton contrat qu'est-ce qui intéresse ou non l'utilisateur de ta méthode ? Tout ce qui ne l'intéresse pas, il doit soit l'ignorer soit être encapsulé pour que ce soit intelligible pour lui.

    Je ne trouve pas que ce soit plus lourd qu'une gestion d'erreur par retour de valeur avec un goto éventuel la vers la fin de la méthode comme c'est fait dans le noyau.

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)