გამონაკლისების დაჭერა Python-ში
Python-ს სხვა პროგრამირების ენებთან შედარებით ძალიან ბევრი სიტუაცია აქვს, რომელიც იწვევს გამონაკლისებს.
მოდით განვიხილოთ ისინი უფრო დეტალურად. დავუშვათ გვაქვს სია:
lst = [1, 2, 3]
მივმართოთ სიის არარსებულ ელემენტს:
print(lts[4])
კოდის შესრულების შემდეგ გამოიტანს შეცდომას (გამონაკლისს):
IndexError: list index out of range
თუ კი ჩვენ გვსურს ვიმუშაოთ გამონაკლისის გამოტანის გარეშე,
ის უნდა დავიჭიროთ
try-except კონსტრუქციის გამოყენებით. მას
აქვს შემდეგი სინტაქსი:
try:
# კოდი, რომელიც იწვევს გამონაკლისს
except:
# შეცდომის დამუშავება
try ბლოკში უნდა განთავსდეს კოდი,
რომელიც შეიძლება შეიცავდეს გამონაკლისს. თუ
ამ კოდის შესრულებისას წარმოიქმნება
გამონაკლისური სიტუაცია, მაშინ კოდის შესრულება
არ შეჩერდება, არამედ გადავა except
ბლოკის კოდში.
ამ ბლოკში უნდა იყოს
აღწერილი შეტყობინება, რომელიც მაქსიმალურად
ზუსტად აღწერს წარმოშობილი შეცდომის არსს.
თუ კი try ბლოკის შესრულებისას
არანაირი გამონაკლისური სიტუაცია არ მოხდა,
მაშინ სასარგებლო კოდი უბრალოდ შესრულდება, ხოლო კოდი
except ბლოკიდან - არა.
მოდით დავიჭიროთ ჩვენი გამონაკლისი სიის
არარსებულ ელემენტზე მიმართვისას.
ამისათვის try ბლოკში ჩავსვათ კოდი
პოტენციური შეცდომით. ხოლო except ბლოკში
მივუთითოთ კონსოლში შეტყობინების გამოტანა 'error:
elem is not exist':
lst = [1, 2, 3]
try:
print(lst[4])
except:
print('error: elem is not exist')
კოდის შესრულების შემდეგ გამოიტანს:
'error: elem is not exist'
try-except კონსტრუქციის შესწავლის შემდეგ
თქვენს მიერ დაწერილი კოდის სტილი უნდა შეიცვალოს.
ახლა ყველა ის ადგილი, სადაც შეიძლება წარმოიქმნას
გამონაკლისური სიტუაცია, საჭიროა შეფუთოთ
try-ში, ხოლო except ბლოკში
აღწეროთ რეაქცია ამ გამონაკლისზე.
Ჰკითხეთ მომხმარებელს ორი რიცხვი. გაყავით ერთი მეორეზე. დაჭირეთ ნულზე გაყოფის გამონაკლისური სიტუაცია.
Ჰკითხეთ მომხმარებელს რიცხვი. იპოვეთ ამ რიცხვის კვადრატული ფესვი. დაჭირეთ უარყოფითი რიცხვიდან ფესვის ამოღების გამონაკლისურ სიტუაციას.
მოცემულია სია. Ჰკითხეთ მომხმარებელს მთელი რიცხვი. მიიღეთ სიის ელემენტი, რომლის ნომერიც მომხმარებელმა შეიყვანა. დაჭირეთ გამონაკლისურ სიტუაციას, რომელიც მოხდება, თუ მომხმარებელმა შეიყვანა რიცხვი სიის დიაპაზონის გარეთ.
მოცემულია შემდეგი კოდი:
num = '5'
res = num + 2
print(res)
რა არასწორია ამ კოდში? გამასწორეთ მისი ნაკლოვანებები.
მოცემულია შემდეგი კოდი:
lst = [1, 2, 3, 4]
def getElem(iter):
print(iter[4])
getElem(lst)
რა არასწორია ამ კოდში? გამასწორეთ მისი ნაკლოვანებები.