CodeGym /Kurslar /Python SELF AZ /Birkaç istisnanı emal etmək

Birkaç istisnanı emal etmək

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

4.1 Bir neçə istisnanın tutulması

Python bir neçə istisnanı işləməyi, bir neçə except bloku və ya bir except bloku ilə tuple istisnaları istifadə edərək həyata keçirməyə icazə verir. Hər iki yanaşmanı nəzərdən keçirək.

Bir neçə except bloku

Müxtəlif istisna növlərini ayrı-ayrılıqda işləmək üçün bir neçə except bloku istifadə edə bilərsiniz.


try:
    # İstisna yarada biləcək kod
    result = int("abc")
except ValueError:
    print("Səhv: düzgün olmayan dəyər.")
except ZeroDivisionError:
    print("Səhv: sıfra bölmə.")

Bir except bloku ilə tuple istisnaları

Bir neçə istisnanı bir except blokunda, onları tuple şəklində ötürərək idarə edə bilərsiniz.


try:
    # İstisna yarada biləcək kod
    result = int("abc")
except (ValueError, ZeroDivisionError) as e:
    print(f"Xəta baş verdi: {e}")

except-də NameError istifadə as var ilə

İstisnaların işlənməsi zamanı except <ExceptionType> as <variable> sintaksisindən istifadə edərək istisna obyektinə müraciət edə bilərsiniz. Bu, xəta mesajı və digər atributlar kimi istisna haqqında məlumat əldə etməyə imkan verir.


try:
    # NameError yarada biləcək kod
    print(undeclared_variable)
except NameError as e:
    print(f"Xəta baş verdi: {e}")
    print(f"Xətanın növü: {type(e)}")

4.2 Səhv dəyişəninin əhatə sahəsi

İstisnanın saxlanıldığı dəyişən (e yuxarıdakı nümunədə) yalnız öz except blokunun daxilində əlçatandır. Blokun xaricində bu dəyişən əlçatmazdır.


try:
    # NameError yarada bilən kod
    print(undeclared_variable)
except NameError as e:
    print(f"Xəta baş verdi: {e}")
    print(f"Xəta növü: {type(e)}")
# Burada e artıq əlçatmazdır və aşağıdakı sətir NameError yaradacaq
# print(e)  # NameError: name 'e' is not defined

Əgər istisnanı blokun xaricində vacib bir şey üçün istifadə etmək istəyirsinizsə, onu ayrıca bir dəyişəndə saxlamaq lazımdır. Nümunə:


exception = None
try:
    # İstisna yarada bilən kod
    result = int("abc")
except ValueError as e:
    exception = e
    print("Xəta: yanlış dəyər.")
except ZeroDivisionError as e:
    exception = e
    print("Xəta: sıfıra bölmə.")

print(exception)

Diqqət yetirin ki, exception dəyişəni baş verən son istisnanı saxlayır, bu isə blokun try xaricində sonrakı emalda faydalı ola bilər.

4.3 Xətada nə faydalı var

İstisna obyekti xəta haqqında məlumat saxlayır. İstisnanın növündən asılı olaraq obyekt müxtəlif atributlara malik ola bilər.

Əksər istisnalar üçün mövcud olan bəzi ümumi atributlar:

  • args: İstisna yaradılarkən ötürülən arqumentləri ehtiva edən tuple. Adətən bu, xəta mesajıdır.
  • message: Xəta mesajını saxlayan string (bəzi istisnalarda).
  • __str__: İstisnanın sətir təqdimatını qaytaran metod. Bu metod print() funksiyası istisna obyektində istifadə edildikdə xəta üçün mətn təqdimatını əldə etmək üçün istifadə olunur.

Nümunə:


try:
    # ValueError yarada bilən kod
    result = int("abc")
except ValueError as e:
    print(f"Xəta baş verdi: {e}")
    print(f"Xətanın arqumentləri: {e.args}")
    print(f"Xəta mesajı: {str(e)}")

Bir neçə istisnanı işləmə nümunəsi


try:
    # Bir neçə növ istisna yarada bilən kod
    result = 10 / 0
except (ValueError, ZeroDivisionError) as e:
    print(f"Xəta baş verdi: {e}")
    print(f"Xətanın növü: {type(e)}")
    print(f"Xətanın arqumentləri: {e.args}")

Əgər ValueError və ya ZeroDivisionError baş verərsə, o, except bloku tərəfindən tutulacaq. İstisna haqqında məlumat e dəyişəni vasitəsilə əlçatan olacaq. Çıxışda xətanın növü və istisnanın yaradılarkən ötürülən arqumentlər göstəriləcək.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION