Pattern-ul asta e super-dubios. In principiu exceptiile le folosesti pentru non-local control flows. Mai pe romaneste, ai ajuns intr-un punct al programului si ai o situatie exceptionala (data.timp < 0
). Si nici nu prea ai ce sa faci acolo ca sa o rezolvi (eg - sa-i ceri user-ului un al timp). Asa ca faci un raise ValueError
si lasi o alta bucata de cod, undeva intr-un loc mult mai high-level sa se ocupe de ea.
Cum as rescrie ce e mai sus:
def validate(data):
if data.timp < 0:
raise ValueError(f"Timpul are o valoare negativa: {data.timp}. Te rog introdu o valoare pozitiva")
...
# in main
def main():
#your codes here
try:
validate(parsed_data)
except ValueError as e:
print(f"Some invalid data -- {e}")
sys.exit(1)
# rest of code which now knows parsed_data is OK