Ծրագրեր գրելիս մենք հաճախ բախվում ենք իրավիճակների, երբ ծրագրի կատարման բնականոն հոսքը պետք է փոխվի որոշ պայմանների պատճառով: Python-ը մեզ մեխանիզմներ է տրամադրում նման իրավիճակները բացառությունների միջոցով կարգավորելու համար: Բացառություններ են այն իրադարձությունները, որոնք կարող են փոփոխել ծրագրի միջոցով վերահսկողության հոսքը: Python-ում դուք կարող եք ձեռքով գործարկել բացառություն ձեր ծրագրի ցանկացած կետում՝ օգտագործելով raise դրույթը:
Ահա raise դրույթն օգտագործելու պարզ օրինակ.
x = -1
if x < 0:
# raise an exception if x is negative
raise Exception('x should not be negative')
Այս ծրագրում, եթե x-ի արժեքը 0-ից փոքր է, Exception տիպի բացառություն է raise անվում x should not be negative հաղորդագրությամբ։ Եթե դուք աշխատացնեիք այս ծրագիրը, այն կկանգնեցվեր raise հայտարարության մեջ և դուրս կտպեր բացառության հաղորդագրությունը, այսպես.
Exception: x should not be negative
Բացի Exception-ից, Python-ում կա մի քանի ներկառուցված բացառություններ, որոնք կարող եք օգտագործել՝ ավելի կոնկրետ տեսակի սխալներ raise անելու համար: Ահա թե ինչպես կարող եք raise անել ValueError.
def sqrt(n):
if n < 0:
# raise a ValueError if n is negative
raise ValueError('Square root not defined for negative numbers')
return n ** 0.5
print(sqrt(4)) # 2.0
print(sqrt(-1)) # ValueError: Square root not defined for negative numbers
Այս օրինակում sqrt(n) ֆունկցիան փորձում է հաշվարկել n թվի քառակուսի արմատը։ Այնուամենայնիվ, եթե n-ը բացասական է, այն raise է անում ValueError՝ հատուկ հաղորդագրությամբ:
Նկատի ունեցեք, որ երբ դուք raise եք անում բացառություն, ծրագրի աշխատանքը ընդհատվում է: Սա հաճախ ցանկալի վարք է, քանի որ թույլ է տալիս ազդանշան տալ, որ ինչ-որ անսպասելի բան է տեղի ունեցել, որը ծրագիրը չի կարող կարգավորել: Հատուկ բացառության տեսակը և հաղորդագրությունը լրացուցիչ տեղեկություններ են տալիս սխալի մասին:
Առաջադրանք: Ֆայլերի ընթերցող
Ծրագրային ապահովման խոշոր ընկերությունում գրացուցակում կան բազմաթիվ կոդային ֆայլեր: Ձեզանից պահանջվում է գրել Python ֆունկցիա, որը բացում է ֆայլը և վերադարձնում դրա բովանդակությունը: Բայց այն նաև պետք է կարողանա կարգավորել այն դեպքերը, երբ ֆայլ գոյություն չունի:
Ֆունկցիայի պարամետրը ֆայլի անունն է:
Ֆունկցիան պետք է կարդա և վերադարձնի ֆայլի բովանդակությունը: Այն դեպքում, երբ ֆայլը գոյություն չունի, այն պետք է raise անի FileNotFoundError: