1) `try/except`: capturas específicas
Captura concreta = diagnóstico claro.
Si sabes que una conversión puede fallar por formato, captura `ValueError`, no todas las excepciones posibles.
Cada tipo de excepción comunica una categoría de fallo distinta; aprovecharlo mejora observabilidad.
Un mensaje de error útil debe indicar qué entrada falló y por qué.
def parse_entero(valor: str) -> int:
try:
return int(valor)
except ValueError:
raise ValueError(f'No es un entero válido: {valor}')
print(parse_entero('42'))