Junior
Care sunt caracteristicile gestionării excepțiilor în Python?
sobes.tech AI
Răspuns de la AI
Excepțiile în Python sunt evenimente care întrerup fluxul normal de execuție al programului. Ele sunt obiecte care reprezintă erori.
Caracteristici:
- Ierarhia excepțiilor: Toate excepțiile încorporate sunt clase și sunt organizate într-o ierarhie bazată pe moștenirea de la clasa de bază
BaseException.# Exemplu de ierarhie # BaseException -> Exception -> StandardError -> ... # Exception -> ArithmeticError -> ZeroDivisionError - Blocurile
try...except...: Mecanismul principal de tratare a excepțiilor.try: # Cod care poate genera o excepție result = 10 / 0 except ZeroDivisionError: # Tratarea unei excepții specifice print("Împărțirea la zero!") except Exception as e: # Tratarea altor excepții print(f"A apărut o eroare: {e}") - Mai multe blocuri
except: Permite tratarea diferitelor tipuri de excepții în mod diferit.try: # Cod value = int("abc") except ValueError: print("Format de număr invalid.") except TypeError: print("Tip de date invalid.") - Blocul
else: Se execută dacă blocultryse finalizează fără excepții.try: # Cod result = 10 / 2 except ZeroDivisionError: print("Împărțirea la zero!") else: print("Operație reușită.") - Blocul
finally: Se execută întotdeauna, indiferent dacă a avut loc o excepție sau nu. Este folosit pentru eliberarea resurselor.file = None try: file = open("myfile.txt", "r") # Citirea din fișier except FileNotFoundError: print("Fișierul nu a fost găsit.") finally: if file: file.close() # Închiderea garantată a fișierului - Operatorul
raise: Este folosit pentru a arunca explicit o excepție.def divide(a, b): if b == 0: raise ZeroDivisionError("Nu se poate împărți la zero") return a / b try: divide(10, 0) except ZeroDivisionError as e: print(f"Eroare: {e}") - Excepții personalizate: Se pot crea propriile clase de excepții moștenind de la
Exceptionsau altă clasă de excepții existentă.class CustomError(Exception): pass def process_data(data): if not data: raise CustomError("Datele sunt goale") try: process_data([]) except CustomError as e: print(f"Eroare: {e}") - Tratamentul excepțiilor folosind managerul de context
with: Simplifică lucrul cu resursele care necesită închiderea explicită (de exemplu, fișierele).try: with open("myfile.txt", "r") as file: # Lucru cu fișierul content = file.read() except FileNotFoundError: print("Fișierul nu a fost găsit.") # Fișierul se închide automat la ieșirea din blocul 'with' - Împachetarea excepțiilor: În timpul tratamentului unei excepții, se poate păstra informație despre excepția anterioară (implicit sau folosind
raise Exception from another_exception).
Aceste caracteristici oferă un mecanism flexibil și puternic pentru gestionarea erorilor în Python, permițând crearea unor programe mai fiabile și rezistente la defecțiuni.