PHP istisnolar (exceptions)
PHP istisnolari nima?
Istisno - bu PHP skriptining bajarilishi paytida yuzaga keladigan istalmagan yoki kutilmagan hodisa.
Istisnolar ko‘plab PHP funksiyalari va classlari tomonidan chiqariladi
(agar kutilmagan vaziyat yuzaga kelsa, masalan, noto‘g‘ri ma’lumotlar).
Istisno tashlanganida, uni kod bloki (odatda try...catch) ushlashi mumkin.
blok) tegishli bilan
xato bilan ishlash. Agar istisno ushlanmasa, u tomonidan ishlov beriladi
standart istisno ishlovchi va ko‘pincha halokatli xato va skriptga olib keladi
tugatish.
PHP istisnolarni qayta ishlash uchun quyidagi kalit so‘zlardan foydalanadi:
throw- Bu kalit so‘z istisnolarni tashlash uchun ishlatiladi.try- Bu kalit so‘zyokitry...catchtry...catch...finallyiborasini yaratish uchun ishlatiladi.catch- Ushbu kalit so‘z tashlangan istisnolarni boshqarish uchun ishlatiladi oldingitryblokidagi kod bo‘yicha.finally- Bu kalit so‘ztry...finallyda ishlatiladi va ishga tushirish uchuntry...catch...finallya istisno sodir bo‘ladimi yoki yo‘qmi, kod bloki.
PHP otish kalit so‘zi
throw kalit so‘zi istisno qilish uchun ishlatiladi.
Agar istisno QO‘SHILMASA, "Uchqalanmagan istisno" xabari bilan halokatli xatolik yuzaga keladi va skript tugatiladi.
Bu yerda biz uni tutmasdan istisno qilamiz:
Misol
<?php
function divide($x, $y) {
if($y == 0) {
throw new Exception("Cannot divide by zero.");
}
return $x / $y;
}
echo divide(5, 0); // code that can throw an exception
echo 'Hello';
?>
O‘zingiz sinab ko‘ring »
Natija shunday ko‘rinadi:
Fatal error: Uncaught Exception: Division by zero in C:\webfolder\test.php:4
Stack trace: #0 C:\webfolder\test.php(9):
divide(5, 0) #1 {main} thrown in C:\webfolder\test.php on line 4
PHP-ni sinab ko‘ring... Kalit so‘zni ushlang
Bu yerda yuqoridagi misoldagi istisno/xatoni ushlash va skriptni davom ettirish uchun try...catch kalit so‘zidan foydalanamiz.
Sintaksis
try {
code that can throw an exception
} catch(Exception $e) {
code to run when an exception is caught
}Misol
Istisno o‘rnatilganda xabarni ko‘rsating va skriptni davom ettiring:
<?php
function divide($x, $y) {
if($y == 0) {
throw new Exception("Cannot divide by zero.");
}
return $x / $y;
}
try {
echo divide(5, 0); // can throw an exception
} catch(Exception $e) {
echo 'Error: ' . $e->getMessage();
}
echo '<br>Hello';
?>
O‘zingiz sinab ko‘ring »
Catch bloki qanday turdagi istisnolar ushlanishi kerakligini va uning nomini ko‘rsatadi
istisnoga kirish uchun ishlatilishi mumkin bo‘lgan o‘zgaruvchi. Yuqoridagi misolda turi
istisno Exception va o‘zgaruvchi nomi $e .
PHP sinab ko‘ring... tuting... nihoyat Kalit so‘z
try...catch...finally kalit so‘zi istisnolarni qo‘lga olish uchun ishlatilishi mumkin.
Kod ichidagi kod
finally blok nima bo‘lishidan qat’iy nazar ishlaydi
istisno ushlanganmi yoki yo‘qmi.
Sintaksis
try {
code that can throw an exception
} catch(Exception $e) {
code to run when an exception is caught
} finally {
code that always runs regardless of exception
}Misol
Istisno o‘rnatilganda xabarni ko‘rsating va keyin jarayon tugallanganligini ko‘rsating:
<?php
function divide($x, $y) {
if($y == 0) {
throw new Exception("Cannot divide by zero.");
}
return $x / $y;
}
try {
echo divide(5, 0); // can throw an exception
} catch(Exception $e) {
echo 'Error: ' . $e->getMessage();
} finally {
echo '<br>Process complete.';
}
?>
O‘zingiz sinab ko‘ring »
PHP istisno obyekti
Istisno obyekti funksiya duch kelgan kutilmagan xatti-harakatlar haqida ma’lumotni o‘z ichiga oladi.
Sintaksis
new Exception(message, code, previous)
Parametr qiymatlari
| Parametr | Tavsif |
|---|---|
| message | Ixtiyoriy. Istisno nima uchun tashlanganligini tavsiflovchi string |
| code | Ixtiyoriy. Ushbu istisnoni bir xil turdagi boshqalardan osongina ajratish uchun ishlatilishi mumkin bo‘lgan butun son |
| previous | Ixtiyoriy. Agar bu istisno boshqa istisnoning catch blokiga tashlangan bo‘lsa, ushbu istisnoni ushbu parametrga o‘tkazish tavsiya etiladi. |
Usullari
Istisnoni qo‘lga kiritishda quyidagi jadvalda istisno haqida ma’lumot olish uchun ishlatilishi mumkin bo‘lgan ba’zi usullar ko‘rsatilgan:
| Metod | Tavsif |
|---|---|
| getMessage() | Istisno nima uchun tashlanganligini tavsiflovchi stringni qaytaradi |
| getPrevious() | Agar istisno boshqasi tomonidan qo‘zg‘atilgan bo‘lsa, bu metod ni qaytaradi oldingi istisno |
| getCode() | Istisnoni aniqlash uchun ishlatilishi mumkin bo‘lgan butun sonni qaytaradi |
| getFile() | Istisno sodir bo‘lgan faylga mutlaq yo‘lni qaytaradi |
| getLine() | Istisnoni tashlagan kodning qator raqamini qaytaradi |
Quyidagi misolda istisno qilingan holatlar haqida ko‘proq ma’lumot olish uchun bir nechta istisno usullaridan foydalaniladi:
Misol
Olingan istisno haqida qo‘shimcha ma’lumotni chiqaring:
<?php
function divide($x, $y) {
if($y == 0) {
throw new Exception("Cannot divide by zero.");
}
return $x / $y;
}
try {
echo divide(5, 0);
} catch(Exception $e) {
$file = $e->getFile();
$line = $e->getLine();
$code = $e->getCode();
$message = $e->getMessage();
echo "Exception thrown in $file on line $line: [Code $code] $message";
}
?>
O‘zingiz sinab ko‘ring »
To‘liq istisno ma’lumotnomasi
To‘liq ma’lumot olish uchun bizning PHP uchun to‘liq istisno ma’lumotnomamizga o‘ting.
Ma’lumotnomada barcha istisno usullarining tavsiflari va misollari mavjud.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
