Xatolar va istisnolar


Download 19.19 Kb.
Sana17.12.2022
Hajmi19.19 Kb.
#1025808
Bog'liq
Istisnolarni boshqarish


Istisnolarni boshqarish
Xatolar va istisnolar
Hozirgacha xato xabarlari aytilganidan ko'p bo'lmagan, ammo agar siz misollarni sinab ko'rgan bo'lsangiz, ba'zilarini ko'rgan bo'lishingiz mumkin. Xatolarning (kamida) ikkita farqlanishi mumkin: sintaktik xatolar va istisnolar.
Sintaksis xatolari
Sintaksis xatolar, shuningdek, tahlil qilish xatolari sifatida ham tanilgan, Python-ni o'rganayotganingizda eng ko'p uchraydigan shikoyat turidir:
while True print('Hello world')
File "", line 1
while True print('Hello world')
^
SyntaxError: invalid syntax

Tahlil qiluvchi qoidabuzarlik chizig'ini takrorlaydi va xato aniqlangan chiziqning eng birinchi nuqtasiga ishora qiluvchi kichik "o'q" ni ko'rsatadi. Xato strelka oldidagi belgidan kelib chiqadi (yoki hech bo'lmaganda aniqlangan): misolda xato print() funktsiyasida aniqlangan, chunki uning oldida ikki nuqta (':') yo'q. Fayl nomi va satr raqami chop etiladi, shuning uchun agar kirish skriptdan kelgan bo'lsa, qaerga qarash kerakligini bilasiz.


Istisnolar
Agar gap yoki ifoda sintaktik jihatdan to'g'ri bo'lsa ham, uni bajarishga urinilganda xatolik yuzaga kelishi mumkin. Amalga oshirish jarayonida aniqlangan xatolar istisnolar deb ataladi va ular so'zsiz halokatli emas: tez orada ularni Python dasturlarida qanday hal qilishni o'rganasiz. Ko'pgina istisnolar dasturlar tomonidan ko'rib chiqilmaydi va bu erda ko'rsatilgan xato xabarlariga olib keladi:
10 * (1/0)
Traceback (most recent call last):
File "", line 1, in
ZeroDivisionError: division by zero
>>> 4 + spam*3
Traceback (most recent call last):
File "", line 1, in
NameError: name 'spam' is not defined
>>> '2' + 2
Traceback (most recent call last):
File "", line 1, in
TypeError: can only concatenate str (not "int") to str
Xato xabarining oxirgi satri nima sodir bo'lganligini ko'rsatadi. Istisnolar har xil turlarda bo'ladi va tur xabarning bir qismi sifatida chop etiladi: misoldagi turlar ZeroDivisionError, NameError va TypeError. Istisno turi sifatida chop etilgan satr yuzaga kelgan o'rnatilgan istisnoning nomidir. Bu barcha o'rnatilgan istisnolar uchun to'g'ri, lekin foydalanuvchi tomonidan belgilangan istisnolar uchun to'g'ri bo'lishi shart emas (garchi bu foydali konventsiya bo'lsa ham). Standart istisno nomlari o'rnatilgan identifikatorlardir (zaxiralanmagan kalit so'zlar).
Qatorning qolgan qismi istisno turiga va unga nima sabab bo'lganiga qarab batafsil ma'lumot beradi.
Xato xabarining oldingi qismi istisno sodir bo'lgan kontekstni stekni kuzatish ko'rinishida ko'rsatadi. Umuman olganda, u manba satrlari ro'yxatini kuzatish uchun stekni o'z ichiga oladi; ammo, u standart kiritishdan o'qilgan satrlarni ko'rsatmaydi.
O'rnatilgan istisnolar o'rnatilgan istisnolar va ularning ma'nolarini sanab o'tadi.
Istisnolarni qayta ishlash
Tanlangan istisnolarni hal qiluvchi dasturlarni yozish mumkin. Quyidagi misolni ko'rib chiqing, u to'g'ri butun son kiritilgunga qadar foydalanuvchidan kiritishni so'raydi, lekin foydalanuvchiga dasturni to'xtatishga imkon beradi (Control-C yoki operatsion tizim qo'llab-quvvatlaydigan narsadan foydalanish); E'tibor bering, foydalanuvchi tomonidan ishlab chiqarilgan uzilish KeyboardInterrupt istisnosini ko'tarish orqali signallanadi.
while True:
... try:
... x = int(input("Please enter a number: "))
... break
... except ValueError:
... print("Oops! That was no valid number. Try again...")

Amaliy qism:
Pyython Selenium kutubxonosidan foydalanishda istisnolarni ishlatish:

Kodi:
import time
from selenium import webdriver
from selenium.webdriver.common.by import By

from data import *


url = "https://student.fbtuit.uz/"


driver = webdriver.Chrome(executable_path="C:\\Users\\dabdu\\Desktop\hemis_test\\chromedriver_win32\\chromedriver.exe")


try:
driver.get(url=url)


time.sleep(3)
driver.find_element(by=By.ID, value="formstudentlogin-login").send_keys(LOGIN)
driver.find_element(by=By.ID, value="formstudentlogin-password").send_keys(PASSWORD)
driver.find_element(by=By.XPATH, value='//*[@id="login-form"]/div[2]/div/div[2]/button').click()
time.sleep(2)
driver.find_element(by=By.XPATH, value='//*[@id="attendance-grid"]/div[2]/div/div/div[2]/div/div[4]/a').click()
time.sleep(1)
driver.find_element(by=By.XPATH, value=f'{EVALUTSIYA}').click()
time.sleep(3)
except Exception as ex:
print(ex)

finally:
driver.close()


driver.quit()

Bu yerda driver o’zgaruvchsi belgilangan urlga so’rov jo’natadi agar muvaffaqiyatli bo’lsa, dastur keying qismga o’tadi, aks holda, except Exception as ex orqali xatolik console oynasiga chiqariladi. Shundan so’ng finally kalit so’zi yordamida driver yopiladi va undan chiqiladi.

Download 19.19 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling