Gestione degli errori e sicurezza
Scrivi codice C++ robusto con una gestione degli errori adeguata — eccezioni, garanzie di sicurezza RAII, tipi somma e pattern di programmazione difensiva.
Eccezioni e strategie di gestione degli errori
Eccezioni: throw, try, catch
Comprendi il meccanismo delle eccezioni del C++ — lo srotolamento dello stack, la gerarchia standard delle eccezioni, le eccezioni personalizzate e quando preferire le eccezioni ai codici di errore.
Garanzie di sicurezza rispetto alle eccezioni
Impara i tre livelli di sicurezza rispetto alle eccezioni — di base, forte e no-throw — e come il RAII e il copy-and-swap li forniscono.
Strategie di gestione degli errori: scegliere l'approccio giusto
Confronta eccezioni, codici di errore e std::expected — scopri quando ciascun approccio è appropriato e come gestire gli errori nei costruttori, nei distruttori e nel codice multithread.
Sicurezza dei tipi e programmazione difensiva
std::optional, std::variant e std::expected
Usa i tipi somma di C++17/23 per rappresentare valori che possono mancare, union type-safe e ritorni valore-o-errore — eliminando intere classi di bug a tempo di compilazione.
Sicurezza dei tipi, asserzioni e contratti
Sfrutta il sistema di tipi del C++ per prevenire i bug a tempo di compilazione — enum forti, il pattern newtype, static_assert, asserzioni a runtime e la futura funzionalità dei contratti.
Comprendere ed evitare il comportamento indefinito
Scopri cos'è il comportamento indefinito, perché esiste, come i compilatori lo sfruttano per ottimizzare e come rilevarlo con i sanitizer e gli avvisi del compilatore.