Skip to content

Commit cec3059

Browse files
committed
version 1.10
1 parent a76a1cf commit cec3059

File tree

2 files changed

+52
-51
lines changed

2 files changed

+52
-51
lines changed

04_gestione_errori.ipynb

Lines changed: 16 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"\n",
99
"---\n",
1010
"\n",
11-
"In questo capitolo impariamo come intercettare e gestire errori (eccezioni) che si verificano durante l'esecuzione del programma. Una corretta gestione degli errori rende il tuo codice più robusto e affidabile."
11+
"In questo capitolo si descirve la gestone degli errori (eccezioni) che si verificano durante l'esecuzione del programma. Una corretta gestione degli errori è essenziale per rendere il codice più robusto e affidabile."
1212
]
1313
},
1414
{
@@ -17,7 +17,7 @@
1717
"source": [
1818
"## 1. Tipi di errori comuni\n",
1919
"\n",
20-
"Gli errori, o **eccezioni**, si verificano quando Python non può eseguire un'operazione. Se non gestite, interrompono l'esecuzione del programma. Vediamo alcuni dei tipi più comuni:\n",
20+
"Gli errori, o **eccezioni**, si verificano quando Python non può eseguire un'operazione. Se non gestite, interrompono l'esecuzione del programma. Qui sono riportati alcunu esempi delle eccezioni più comuni:\n",
2121
"\n",
2222
"- `SyntaxError`: Errore di sintassi, come una parentesi mancante. Non può essere gestito con `try/except`.\n",
2323
"- `TypeError`: Errore di tipo, ad esempio, quando si cerca di sommare un numero a una stringa.\n",
@@ -101,8 +101,6 @@
101101
"try:\n",
102102
" # Try to convert the input into an integer\n",
103103
" number = int(input(\"Enter a number: \"))\n",
104-
" \n",
105-
" # Try to perform a division\n",
106104
" result = 10 / number\n",
107105
"except ValueError:\n",
108106
" print(\"Error: Enter a valid int.\")\n",
@@ -122,10 +120,10 @@
122120
"source": [
123121
"## 5. Best practice per gestire gli errori\n",
124122
"\n",
125-
"- Usa `try/except` solo quando serve: non coprire tutto il codice, ma solo le parti che possono davvero fallire.\n",
123+
"- Usa `try/except` solo quando serve.\n",
126124
"- Specifica l'eccezione giusta (es. `ValueError`) invece di usare sempre `except Exception`.\n",
127125
"- Aggiungi messaggi chiari per l'utente.\n",
128-
"- Usa `finally` per chiudere file o connessioni, anche in caso di errore.\n",
126+
"- Usa `finally` per chiudere risorse, anche in caso di errore.\n",
129127
"\n",
130128
"```python\n",
131129
"try:\n",
@@ -147,39 +145,6 @@
147145
"---"
148146
]
149147
},
150-
{
151-
"cell_type": "markdown",
152-
"metadata": {},
153-
"source": [
154-
"### Esercizio 1: Divisione sicura\n",
155-
"Scrivi un programma che chiede due numeri e li divide. Gestisci sia l'errore di **divisione per zero** (`ZeroDivisionError`) che l'input non numerico (`ValueError`)."
156-
]
157-
},
158-
{
159-
"cell_type": "markdown",
160-
"metadata": {},
161-
"source": [
162-
"### Esercizio 2: Accesso alla lista\n",
163-
"Crea una lista con alcuni elementi. Chiedi all'utente di inserire un indice e stampa l'elemento corrispondente. Gestisci gli errori `IndexError` (se l'indice è fuori range) e `ValueError` (se l'input non è un numero intero)."
164-
]
165-
},
166-
{
167-
"cell_type": "markdown",
168-
"metadata": {},
169-
"source": [
170-
"### Esercizio 3: Converti in int\n",
171-
"Chiedi all'utente di inserire un numero. Usa un blocco `try` per gestire il caso in cui inserisce un testo che non può essere convertito in numero intero. Se la conversione ha successo, stampa il numero, altrimenti stampa un messaggio di errore."
172-
]
173-
},
174-
{
175-
"cell_type": "markdown",
176-
"metadata": {},
177-
"source": [
178-
"## Soluzioni\n",
179-
"\n",
180-
"---"
181-
]
182-
},
183148
{
184149
"cell_type": "markdown",
185150
"metadata": {},
@@ -219,12 +184,12 @@
219184
"source": [
220185
"fruits = ['apple', 'banana', 'kiwi']\n",
221186
"try:\n",
222-
" fruits_index = int(input(f\"Enter an index (from 0 to {len(fruits) - 1}): \"))\n",
187+
" index = int(input(f\"Enter an index (0-{len(fruits)-1}): \"))\n",
223188
" print(f\"Element at index {index} is: {fruits[index]}\")\n",
224189
"except ValueError:\n",
225190
" print(\"Error: Input is not an int.\")\n",
226191
"except IndexError:\n",
227-
" print(f\"Error: Index if out of range (0-{len(fruits) - 1}).\")"
192+
" print(f\"Error: Index out of range (0-{len(fruits)-1}).\")"
228193
]
229194
},
230195
{
@@ -245,18 +210,18 @@
245210
" number_int = int(number_str)\n",
246211
" print(f\"Int is: {number_int}\")\n",
247212
"except ValueError:\n",
248-
" print(f\"Error: \\\"{number_str}\\\" is not a valid int.\")"
213+
" print(f\"Error: '{number_str}' is not a valid int.\")"
249214
]
250215
},
251-
{
252-
"cell_type": "markdown",
253-
"id": "footer",
254-
"metadata": {},
255-
"source": [
256-
"© 2025 Hanamai. All rights reserved. | Built with precision for real-time data streaming excellence."
257-
]
258-
}
259-
],
216+
{
217+
"cell_type": "markdown",
218+
"id": "footer",
219+
"metadata": {},
220+
"source": [
221+
"© 2025 Hanamai. All rights reserved. | Built with precision for real-time data streaming excellence."
222+
]
223+
}
224+
],
260225
"metadata": {
261226
"kernelspec": {
262227
"name": "python3",

09_oop.ipynb

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,42 @@
393393
"boat.movement()"
394394
]
395395
},
396+
{
397+
"cell_type": "markdown",
398+
"metadata": {},
399+
"source": [
400+
"## 9. Eccezioni personalizzate\n",
401+
"\n",
402+
"Ora che sono state introdotte le classi, possiamo vedere come usarle per creare eccezioni personalizzate. Oltre alle eccezioni predefinite, possiamo **creare eccezioni personalizzate** per gestire situazioni specifiche del nostro programma.\n",
403+
"\n",
404+
"Per creare un'eccezione personalizzata, si definisce una **nuova classe** che eredita da `Exception`:\n",
405+
"\n",
406+
"```python\n",
407+
"class NomeEccezione(Exception):\n",
408+
" def __init__(self, messaggio):\n",
409+
" super().__init__(messaggio)\n",
410+
"```\n",
411+
"\n",
412+
"Esempio:\n",
413+
"```python\n",
414+
"class NegativeNumberError(Exception):\n",
415+
" def __init__(self, value):\n",
416+
" super().__init__(f\"Errore: il numero {value} è negativo.\")\n",
417+
"\n",
418+
"def square_root(x):\n",
419+
" if x < 0:\n",
420+
" raise NegativeNumberError(x)\n",
421+
" return x ** 0.5\n",
422+
"\n",
423+
"try:\n",
424+
" result = square_root(-9)\n",
425+
"except NegativeNumberError as e:\n",
426+
" print(e)\n",
427+
"```\n",
428+
"\n",
429+
"➡️ Questo approccio permette di creare messaggi di errore più chiari e di gestire condizioni speciali nel codice."
430+
]
431+
},
396432
{
397433
"cell_type": "markdown",
398434
"id": "056cf1a4",

0 commit comments

Comments
 (0)