Sobes.tech
Junior

Python-ში გამონაკლისების დამუშავების რა მახასიათებლებია?

sobes.tech AI

პასუხი AI-სგან

Python-дағы қателер — бұл бағдарлама орындалу процесін бұзатын оқиғалар. Олар қателерді көрсететін объектілер.

Ерекшеліктер:

  • Қателердің мұрагерлігі: Барлық кіріктірілген қателер кластар болып табылады және мұрагерлік негізінде ұйымдастырылған BaseException негізгі кластан.
    # Мысал мұрагерлік
    # BaseException -> Exception -> StandardError -> ...
    #                  Exception -> ArithmeticError -> ZeroDivisionError
    
  • try...except... блоктары: Қателерді өңдеудің негізгі механизмі.
    try:
        # Қосымша қате тудыруы мүмкін код
        result = 10 / 0
    except ZeroDivisionError:
        # Нақты қателерді өңдеу
        print("Бөлінуде нөл!")
    except Exception as e:
        # Басқа қателерді өңдеу
        print(f"Қате орын алды: {e}")
    
  • Көп except блоктары: Әртүрлі қателерді әртүрлі өңдеуге мүмкіндік береді.
    try:
        # Код
        value = int("abc")
    except ValueError:
        print("Қате форматтағы сан.")
    except TypeError:
        print("Қате деректер түрі.")
    
  • else блогы: Егер try блогы қателерсіз аяқталса, орындалады.
    try:
        # Код
        result = 10 / 2
    except ZeroDivisionError:
        print("Бөлінуде нөл!")
    else:
        print("Операция сәтті орындалды.")
    
  • finally блогы: Әрқашан орындалады, қателер болсын немесе жоқ.
    file = None
    try:
        file = open("myfile.txt", "r")
        # Файлды оқу
    except FileNotFoundError:
        print("Файл табылмады.")
    finally:
        if file:
            file.close() # Файлды кепілдендірілген түрде жабу
    
  • raise операторы: Қателікті айқын шақыру үшін пайдаланылады.
    def divide(a, b):
        if b == 0:
            raise ZeroDivisionError("Нөлге бөлуге болмайды")
        return a / b
    
    try:
        divide(10, 0)
    except ZeroDivisionError as e:
        print(f"Қате: {e}")
    
  • Арнайы қателер: Өз кластарын құра аласыз, оларды Exception немесе басқа бар кластардан мұраға алуға болады.
    class CustomError(Exception):
        pass
    
    def process_data(data):
        if not data:
            raise CustomError("Деректер бос")
    
    try:
        process_data([])
    except CustomError as e:
        print(f"Қате: {e}")
    
  • Қателерді өңдеу with контекст менеджері арқылы: Бұл ресурстармен жұмыс істеуді жеңілдетеді, оларды айқын жабу керек (мысалы, файлдар).
    try:
        with open("myfile.txt", "r") as file:
            # Файлмен жұмыс
            content = file.read()
    except FileNotFoundError:
        print("Файл табылмады.")
    # Файл автоматты түрде `with` блогынан шыққанда жабылады
    
  • Қателерді тізбектеу: Қате өңдеу кезінде алдыңғы қате туралы ақпарат сақталуы мүмкін (жеке немесе raise Exception from another_exception пайдалану арқылы).

Бұл ерекшеліктер Python-да қателерді өңдеудің икемді және қуатты механизмін қамтамасыз етеді, ол сенімді әрі қателерге төзімді бағдарламалар жасауға мүмкіндік береді.