Python-да бағдарламалау кезінде екі түрлі қателерге кезігуіміз мүмкін. Бірінші типтегі қателер синтаксистік қателер (syntax error) деп аталады. Олар бастапқы кодты жазу кезінде бағдарламалау тілінде пайда болатын синтаксистік қателер нәтижесінде пайда болады. Әдетте оны бағдарламаның өзі көрсетеді.
Екінші типтегі қателерге орындау қателері (runtime error) жатады. Олар компиляцияланған бағдарламада оның орындалу мезетінде пайда болады. Ондай қателерді ерекше жағдайлар деп те атайды. Мысалы:
string = "5"
number = int(string)
print(number)
|
Бұл скрипт компиляциядан өтіп, дұрыс орындалады, себебі "5" жолы санға өзгере алады.
Алайда екінші мысалды қарастырайық:
string = "hello"
number = int(string)
print(number)
|
Бұл скриптті орындау кезінде ValueError ерекше жағдайы шығады, себебі "hello" жолын санға түрлендіруге келмейді. Бір жағынан мұнда жолдың санды көрсете алмайтыны анық көрініп тұр, бірақ бізде қолданушы өзі мән енгізетін жағдай болуы мүмкін және ол біз күткен мәнді енгізбеуі мүмкін.
string = input("Сан енгіз: ")
number = int(string)
print(number)
|
Ерекше жағдай пайда болған кезде бағдарлама үзіледі, ондай жағдайды болдырмау үшін және ерекше жағдайларды өңдеу үшін Python-да try..except құрылымы қолданылады. Оның жазылу форматы:
try:
инструкциялар
except [Ерекше_жағдай_типі]:
инструкциялар
|
Ерекше жағдайлар пайда болуы мүмкін негізгі код try кілттік сөзінен жазылады. Егер бұл кодта ерекше жағдай генерацияланатын болса, онда try блогындағы код жұмысы үзіліп, except блогы орындалады.
except кілттік сөзінен кейін қандай ерекше жағдай өңделетінін көрсетуге болады (ValueError немесе KeyError).
Жолды санға түрлендірудің ерекше жағдайын өңдеуге мысал қарастырайық:
try:
number = int(input("Сан енгізіңіз: "))
print("Енгізілген сан:", number)
except:
print("Түрлендіру сәтсіз аяқталды")
print("Бағдарлама соңы")
|
Жол енгіземіз:
Дұрыс сан енгіземіз:
Сан енгізіңіз: 22
Енгізілген сан: 22
Бағдарлама соңы
|
Мұнда барлығы дұрыс орындалып, except блогы орындалмайды.
Жоғарыда келтірілген мысалда кодта пайда болатын барлық ерекшеліктер дереу өңделді. Алайда, біз сөзден кейін нақтыланатын ерекше жағдай түрін көрсете аламыз:
try:
number = int(input("Сан енгізіңіз: "))
print("Енгізілген сан:", number)
except ValueError:
print("Түрлендіру сәтсіз аяқталды ")
print("Бағдарлама соңы")
|
Егер жағдай бағдарламада әр түрлі ерекшеліктер туындауы мүмкін болса, онда біз оларды қосымша, өрнектерді қоспағанда, жеке өңдей аламыз:
try:
number1 = int(input("Бірінші санды енгізіңіз: "))
number2 = int(input("Екінші санды енгізіңіз: "))
print("Бөлінді нәтижесі:", number1/number2)
except ValueError:
print("Түрлендіру сәтсіз аяқталды ")
except ZeroDivisionError:
print("Санды нөлге бөлу әрекеті")
except Exception:
print("Жалпы ерекше жағдай")
print("Бағдарлама соңы")
|
Достарыңызбен бөлісу: |