Justificació
1- La seguretat de les dades
La depuració no només serveix per arreglar errors, sinó per blindar el programa. Si deixem que un usuari escrigui qualsevol cosa en un camp com el DNI o el correu, les dades de la nostra base de dades acabaran sent inservibles. Validar aquestes entrades garanteix la integritat de les dades: ens assegurem que la informació té el format correcte abans de processar-la.
2- L’experiència d’usuari (UX)
Des del punt de vista de l’usuari (UX), un programa que es tanca de cop (crash) quan hi ha un error dóna una imatge de poca professionalitat i genera desconfiança. Mitjançant la gestió d’excepcions (com els blocs try-except), podem capturar l’error i mostrar un missatge d’ajuda amable en lloc de deixar que el servidor caigui. Això fa que l’aplicació sigui més robusta i fàcil d’utilitzar.
3- Continuïtat del servei
En un entorn real, si el codi falla i el servidor s’atura, el servei queda interromput per a tothom. Depurar el codi i preveure possibles errors de l’usuari és una fase crítica per mantenir el sistema estable i evitar el temps d’inactivitat (downtime).
Implementació
He implementat estructures try-except per capturar excepcions durant l’entrada de dades. Això garanteix que, encara que hi hagi un error en el processament, el programa pugui continuar funcionant sense tancar-se inesperadament.
import re
import logging
# 1. Configuració de Logs (per registrar errors si cal)
logging.basicConfig(filename='registre_errors.log', level=logging.ERROR,
format='%(asctime)s - %(levelname)s - %(message)s')
def validar_dni(dni):
"""Comprova que tingui 8 números i una lletra al final."""
return bool(re.match(r'^\d{8}[A-Z]$', dni))
def validar_email(email):
"""Comprova un format estàndard de correu."""
return bool(re.match(r'^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$', email))
# --- Inici del programa ---
print("--- Registre d'Usuari ---")
# --- Bloc DNI amb gestió d'errors ---
while True:
try:
dni = input("Introdueix el teu DNI (8 números i lletra): ").strip().upper()
# Validació manual de seguretat
if not dni:
raise ValueError("El camp DNI no pot estar buit.")
if validar_dni(dni):
print(f"✅ DNI {dni} acceptat.")
break # Sortim del bucle si és correcte
else:
print("⚠️ El format del DNI no és vàlid (exemple: 12345678A).")
except Exception as e:
print(f"❌ S'ha produït un error inesperat: {e}")
logging.error(f"Error en entrada de DNI: {e}")
# --- Bloc Correu amb gestió d'errors ---
while True:
try:
email = input("Introdueix el teu correu electrònic: ").strip().lower()
if validar_email(email):
print(f"✅ Correu {email} acceptat.")
break
else:
print("⚠️ El format del correu electrònic no és correcte.")
except Exception as e:
print(f"❌ Error en processar el correu.")
logging.error(f"Error en entrada d'email: {e}")
print("\nGràcies per introduir les teves dades correctament.")
Per assegurar la integritat de la base de dades, he creat funcions de validació amb expressions regulars. El programa verifica que el DNI tingui 8 números i una lletra, i que l’email segueixi el format estàndard (usuari@domini.com). Si la dada no és vàlida, el programa utilitza un bucle per tornar-la a demanar.


Deixa un comentari