Vai al contenuto
Modulo 6

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

  1. 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.

  2. 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.

  3. 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

  1. 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.

  2. 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.

  3. 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.