Raise տեսակի բացառություններ

Ծրագրեր գրելիս մենք հաճախ բախվում ենք իրավիճակների, երբ ծրագրի կատարման բնականոն ընթացքը պետք է փոխվի՝ որոշակի պայմանների պատճառով: 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 եք անում բացառություն, ծրագրի աշխատանքն ընդհատվում է: Սա կարևոր է, քանի որ մեզ ազդանշան է տալիս, որ անսպասելի մի բան է տեղի ունեցել, որը ծրագիրը չի կարող կարգավորել: Բացառության տեսակը և հաղորդագրությունը լրացուցիչ տեղեկություններ են տալիս սխալի մասին:

Առաջադրանք․ ֆայլերի ընթերցում

Ծրագրային ապահովման խոշոր ընկերության համակարգչի պանակում (directory) կան բազմաթիվ կոդային ֆայլեր: Ձեզանից պահանջվում է գրել Python ֆունկցիա, որը բացում է ֆայլը և վերադարձնում դրա բովանդակությունը: Բայց ֆունկցիան պետք է կարողանա կարգավորել այն դեպքերը, երբ ֆայլ գոյություն չունի:
Մուտքում տրված է ֆայլի անունը:
Ֆունկցիան պետք է կարդա և վերադարձնի ֆայլի բովանդակությունը: Եթե ֆայլը գոյություն չունի, այն պետք է raise անի FileNotFoundError:
Մուտք
Մուտք
existing_file.txt
Hello World
non_existing_file.txt
File does not exist
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue