Perso, je n'ai quasiment jammais utilsié les exceptions en C++.
Mais si je devais, le code ressemblerais plus à ça:
/* Check that everything is Ok, and throw in case of error */staticvoidSSLVerifySignedServerKeyExchange(/* ... */){{std::vector<...>signedHashes=...;std::unique_ptr<...>hashCtx=...;//...SSLHashSHA1.update(hashCtx,serverRandom));SSLHashSHA1.update(hashCtx,signedParams));SSLHashSHA1.final(hashCtx,hashOut));}
Le problème des exceptions c'est que c'est que ça a un coût (en terme de taille du binaire par example). Pas mal de projets sont compilé avec -fno-rtti.
Sans exception le C++ ressemble à ça:
staticOSStatusSSLVerifySignedServerKeyExchange(/* ... */){std::vector<...>signedHashes=...;std::unique_ptr<...>hashCtx=...;OSStatuserr;if((err=SSLHashSHA1.update(&hashCtx,&serverRandom))!=0)returnerr;if((err=SSLHashSHA1.update(&hashCtx,&signedParams))!=0)returnerr;if((err=SSLHashSHA1.final(&hashCtx,&hashOut))!=0)returnerr;returnOSStatus::Success:// no cleaning necessary}
[^] # Re: Le cas goto
Posté par Gof (site web personnel) . En réponse au journal Apple, le SSL les goto et les accolades. Évalué à 3.
Perso, je n'ai quasiment jammais utilsié les exceptions en C++.
Mais si je devais, le code ressemblerais plus à ça:
Le problème des exceptions c'est que c'est que ça a un coût (en terme de taille du binaire par example). Pas mal de projets sont compilé avec
-fno-rtti.Sans exception le C++ ressemble à ça: