• # Mauvaise connaissance du c++

    Posté par . En réponse au journal Gestion de l'erreur - C++ - std::optional. Évalué à 5.

    Cependant, rien ne force le développeur à gérer les exceptions et rien n'indique à celui-ci qu'une fonction peut lancer une exception, si ce n'est une lecture scrupuleuse de la documentation. Certains langages, comme Java, proposent un système d'exception qui force le développeur à gérer celles-ci ou à les propager explicitement à la fonction appelante.

    Pour la stl, les exceptions sont rare uniquement si tu le réclame, optional à un option de construction qui lui permet de jeter une exception lorsque tu utilisas values() si tu lui réclame.

    Tu as aussi le value_or() qui permet d'avoir une valeur par défaut si on a rien. C'est pareil avec les ios, les dynamic_cast, les conteurs (at() au lieu de operator[]... )

    Le fait d'avoir le choix est une bonne chose, je ne compte pas le nombre de

    Machin ma = null ; 
    try{
     ma=pouet() ;
    }catch(ExceptionMachin ignored){}
    }catch(ExceptionBidule ignored){}
    }catch(ExceptionTruc ignored){}

    que je croise en java pour devoir gérer le fait que l'on sait qu'on a pas d'exception dans ce cas précis, mais qu'on doit faire comme si. Avec en prime le fait que le compilo pense que ma peut être null, ce qui peut faire chier au niveau de certaines annotations, donc faut encore en rajouter...

    Heureusement depuis java 7 on peut cumuler les catch (catch ExecptionMachin|ExceptionTruc|ExceptionBidule|ExcetionCasseCouille|ExcetptionJeDepasseLaLigneDe120Caractere|ExceptionJenAiEncore e)

    Le code java est pollué par de la gestion de truc qui n'arrivent jamais, et le jour où ça arrive, c'est tellement ignoré que ça passe à la trappe; j'ai une préférence pour faire un printstacktrace, au cas où.

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent