PHP istisnolar (exceptions)


ULASHISH

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‘z try...catch yoki try...catch...finally iborasini yaratish uchun ishlatiladi.
  • catch - Ushbu kalit so‘z tashlangan istisnolarni boshqarish uchun ishlatiladi oldingi try blokidagi kod bo‘yicha.
  • finally - Bu kalit so‘z try...finally da ishlatiladi va ishga tushirish uchun try...catch...finally a 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!