Loading...
Python

Կարող եք ձեր կոդը փորձարկել այստեղ

Python

Գլուխ 4. Սխալների և բացառությունների կառավարում

try...except...finally

Python-ում ծրագրավորելիս կարող ենք հանդիպել երկու տեսակի սխալների. Առաջին տեսակը շարահյուսական սխալներն են : Դրանք հայտնվում են ծրագրավորման լեզվի շարահյուսության խախտման արդյունքում՝ սկզբնական կոդը գրելիս։ Զարգացման միջավայրում աշխատելիս, ինչպիսին է PyCharm-ը, IDE-ն ինքը կարող է հետևել շարահյուսական սխալներին և ինչ-որ կերպ ընդգծել դրանք:
Երկրորդ տեսակի սխալները գործարկման ժամանակի սխալներն են : Դրանք հայտնվում են արդեն ծրագրի կատարման ժամանակ։ Նման սխալները կոչվում են նաև բացառություններ: Օրինակ, նախորդ թեմաներում մենք նայեցինք տողը թվի վերածելուն.
string = "5" number = int(string) print(number)
Այս սցենարը հաջողությամբ կկատարվի, քանի որ «5» տողը հեշտությամբ կարող է վերածվել թվի: Այնուամենայնիվ, բերենք մեկ այլ օրինակ.
string = "hello" number = int(string) print(number)
Այս սկրիպտը գործարկելու դեպքում ValueError բացառություն կստեղծվի, քանի որ «բարև» տողը չի կարող փոխարկվել թվի.
ValueError: invalid literal for int() with base 10: 'hello'
Մի կողմից, այստեղ ակնհայտ է, որ տողը թիվ չի ներկայացնում, բայց մենք կարող ենք գործ ունենալ օգտվողի մուտքագրման հետ, որը կարող է նաև մուտքագրել մի բան, որը հենց այնպես չէ, ինչ մենք ակնկալում ենք.
string = input("Введите число: ") number = int(string) print(number)
Երբ բացառություն է տեղի ունենում, ծրագիրը ընդհատվում է, և նման պահվածքից խուսափելու և Python-ում բացառությունները լուծելու համար կա try..except կառուցում:
try...except
try...except կոնստրուկցիան ունի հետևյալ պաշտոնական սահմանումը.
try: content except [Exception]: content
Բոլոր հիմնական ծածկագրերը, որոնք կարող են բացառություն առաջացնել, տեղադրվում են փորձել բանալի բառից հետո : Եթե այս կոդը բացառություն է անում, ապա փորձի բլոկի կոդը ընդհատվում է, և կատարումը տեղափոխվում է բացառության բլոկ:
Except հիմնաբառից հետո կարող եք կամայականորեն նշել, թե որ բացառությունն է կարգավորվելու (օրինակ՝ ValueError կամ KeyError): Բառից հետո, բացի հաջորդ տողից, բացի բլոկում կան հայտարարություններ, որոնք կատարվում են, երբ բացառություն է տեղի ունենում:
Եկեք նայենք բացառությունների մշակմանը, օգտագործելով տողը թվի վերածելու օրինակը.
try: number = int(input("Number: ")) print("Number:", number) except: print("Exception") print("End program")
Ինչպես երևում է վահանակի ելքից, երբ մուտք եք գործում տող, թիվը չի ուղարկվում վահանակ, և ծրագրի կատարումը տեղափոխվում է բացառությամբ բլոկ:
Այժմ ամեն ինչ լավ է աշխատում, բացառություն չի բարձրացվում, և, հետևաբար, բացի բլոկը չի կատարվում:
Finally
Բացառությունները մշակելիս կարող եք նաև օգտագործել կամընտիր վերջնական արգելափակում : Այս բլոկի տարբերակիչ առանձնահատկությունն այն է, որ այն իրականացվում է անկախ նրանից, թե արդյոք բացառություն է արվել.
try: number = int(input("Введите число: ")) print("Number:", number) except: print("Exception") finally: print("Finally") print("End program")
Սովորաբար, վերջնական բլոկը օգտագործվում է օգտագործվող ռեսուրսներն ազատելու համար, օրինակ՝ ֆայլերը փակելու համար:
Հարկ է նշել, որ վերջնական բլոկը բացառություններ չի մշակում, և եթե մենք օգտագործում ենք այս բլոկը առանց բացառության բլոկի , ապա եթե սխալ առաջանա, հավելվածը կխափանվի, ինչպես հետևյալ դեպքում՝ թիվը զրոյի բաժանելիս.
try: number = 3/0 print(number) finally: print("End try") print("end program")

Մեկնաբանություն գրելու համար խնդրում ենք մուտք լինել