გამონაკლისი სიტუაციები Python-ში - შესავალი
ამ განყოფილებაში განხილული იქნება გამონაკლისი სიტუაციები Python-ში. დასაწყისისთვის საჭიროა გავიგოთ, რას წარმოადგენენ ისინი.
რაიმე პროგრამის დაწერისას, დეველოპერი არაპირდაპირ ეყრდნობა იმ ფაქტს, რომ გამოყენებული ყველა პროგრამულ-ტექნიკური მექანიზმი მუშაობს კორექტულად.
თუმცა, ეს ყოველთვის ასე არ არის. ქსელში მონაცემების გადაცემისას ხდება კავშირის გაწყვეტა და მონაცემები გვდის არაკორექტული სახით, ან საერთოდ არ მოდის. ფაილის ჩაწერისას აღმოჩნდება, რომ გამოყოფილი ადგილი მყარ დისკზე დასრულდა და ფაილი ვერ იწერება. ფაილის კითხვისას აღმოჩნდება, რომ ასეთი ფაილი არ არსებობს და არ გვაქვს საიდანაც უნდა წავიკითხოთ. მონაცემების დაბეჭდვისას პრინტერზე ხდება კაბელის გაწყვეტა, რომელიც აკავშირებს პრინტერს და კომპიუტერს.
ყველა აღწერილ სიტუაციას აქვს საერთო არსი: ხდება რაიმე უკაცრავობა, რომელიც იწვევს დაგეგმილი ოპერაციის დასრულების შეუძლებლობას ან უაზრობას.
ასევე ხდება სიტუაციები, რომლებშიც ხდება რაიმე შეცდომა, რომელიც არ არის უკაცრავობა. მაგალითად, თქვენ ეკითხებით მომხმარებელს მისი email-ს, და ის შეიყვანს email-ს არაკორექტული ფორმატით. გასაგებია, რომ ჩვენმა პროგრამამ ვერ შეძლოს email-ის განგრძობითი დამუშავება, რადგან ის არაკორექტულია. მაგრამ, მიუხედავად ამისა, ეს - არ არის გამონაკლისი სიტუაცია. ჩვენმა პროგრამამ შეიძლება თავად შეასწოროს სიტუაცია: ის გამოიტანს შეცდომის შეტყობინებას და მომხმარებელი გაიმეორებს თავის შეყვანას.
სინამდვილეში განსხვავება უკაცრავობასა და არა უკაცრავობას შორის საკმაოდ გაურკვეველია. მოვლენა, რომელიც ერთი პროგრამა შეიძლება განმარტოს, როგორც გამონაკლისი სიტუაცია, სხვა პროგრამა შეიძლება განმარტოს, როგორც რაიმე შეცდომა, რომლისთანაც მას შეუძლია გაუმკლავდეს.
კრიტერიუმი აქ ასეთია: თუ პრობლემის გაჩენისას თქვენმა პროგრამამ შეძლოს განგრძობა იმის შესრულება, რისთვისაც ის განკუთვნილია, მაშინ ეს არ არის გამონაკლისი სიტუაცია, ხოლო თუ ვერ შეძლოს - მაშინ კი, ეს არის გამონაკლისი.
მაგალითად, ჩვენ გვაქვს პროგრამა, რომელიც უნდა ჰკითხოს მომხმარებელს მისი email. თუ მომხმარებელმა შეიყვანა email არაკორექტული ფორმატით - ეს არ არის უკაცრავობა. ეს არის მოსალოდნელი პრობლემა და ჩვენი პროგრამა კითხულობს მომხმარებლის email-ს იმდენჯერ, სანამ ის არ შეიყვანს მას კორექტულად.
დავუშვათ, ჩვენი პროგრამა, რომელიც კითხულობს email-ს, ასევე უნდა გაგზავნოს ეს კორექტული email ინტერნეტის მეშვეობით. ამ დროს აღმოჩნდება, რომ ინტერნეტი არ მუშაობს. ეს უკვე პრობლემაა: პროგრამა ვერც კი შეძლებს გაგზავნის მონაცემები ინტერნეტის მეშვეობით, თუ ინტერნეტი არ მუშაობს. პროგრამა, მიუხედავად ამისა, შეიძლება გააგრძელოს თავისი შესრულება: მას შეუძლია გამოიტანოს ინფორმაცია პრობლემის შესახებ, გაიმეოროს გაგზავნის მცდელობა გარკვეული დროის შემდეგ, და ა.შ. მაგრამ ეს მოქმედებები უკვე არ არის სრულიად ის, რისთვისაც პროგრამა იყო განკუთვნილი, რადგან ძირითადი მოქმედება - email-ის გაგზავნა პროგრამას ვერ შეძლებს.
ამის საფუძველზე, ძალიან ხშირად ინტერპრეტაცია, თუ რა ქმედება ჩაითვლება ნორმალურად, ხოლო რა გამონაკლისად, დამოკიდებულია იმ ამოცანებზე, რომლებიც დეველოპერის წინაშე დგას.