Istisnolarni qayta ishlash
O'tkan darsimizda biz xatolarni qayta ishlash bo'yicha o'tgan edik. Endi, istisno va xatolik o'rtasida qanday farq bor degan savol tug'ilishi tabiiy.
PHP 5 da yangi obyektda yo'naltirilgan xatolarni qayta ishlash usuli Istisnolar deb tanishtirilgan.
Exception handling(istisnolarni qayta ishlash) - kod bajarilishi to'xtagan joyda sodir bo'lgan "beo'xshov" xatolar haqidagi xabarni ekranga chiqarish uchun ishlatiladi.
try va catch blokini ishlatish
try bloki ichida jingalak qavslar ichida istisno yoki xatoga olib keladigan kod qismi bo'ladi, agar hech qanday istisnoga duch kelmasa kod odatiy tarzda bajariladi, istisno sodir bo'lgan holatlarda kod bajarilishi try blokidan chiqib, catch blokiga kiradi.
Quyidagi misol istisnoni qayta ishlash uchun try va catch'ni ishlatilish sintaksisi:
<?php try { //istisnoga olib keladigan kod qismi ketadi } catch (Exception $e) { //istisnoni qayta ishlash kod qismi } ?>
throw istisnosi
Agar kerak bo'lsa biz istisnolarni qo'lda ham chiqarishimiz mumkin. Bunda bizga throw kalit so'zi yordam beradi. Exception(istisno) bu PHP sinf bo'lib, PHPdagi barcha exception classes(istisno sinflar) uchun parent class(ota sinf) hisoblanadi.
Istisnoni chiqarish uchun biz istisno sinfining obyektini yaratib olamiz va istisnoni chiqarish uchun throw kalit so'zidan foydalanamiz.
Keling, namunani ko'rib chiqamiz:
<?php // funciton declaration function triggerException() { // using throw keyword throw new Exception("Manually triggering exception..."); } ?>
Agar biz yuqoridagi triggerException() funksiyasini chaqrisak, istisno xabarini chiqaradi.
Endi try blok ichidan funksiyani chaqirib olamiz va catch bloki ichida istisnoni qayta ishlay olamiz. Xuddi shunday:
<?php try { // funksiya chaqirildi triggerException(); } catch (Exception $e) { echo "Oops! Some unexpected error occured..."; } ?>
Oops! Some unexpected error occured...
catch bloki ichida biz exception obyektimizdagi xabarni olishimiz uchun getMessage() metodidan foydalanishimiz mumkin.
Custom Exception Class(Maxsus istisno sinf)
Biz PHP da keltirilgan Exception class dan meros olish orqali maxsus istisno sinfini yaratishimiz mumkin.
Quyida maxsus istisno sinfi uchun namuna mavjud:
<?php // custom exception class class Tutorialsuz extends Exception { // constructor belgilash function __construct() { argumentlarni kiritishimiz mumkin, xohlasek } // agar kerak bo'lsa klass metodlarni yozishimiz mumkin } ?>
Maxsus istisno sinflar agar sizda maxsus xatolari qayta ishlash uchun talablar mavjud bo'lsa, misol uchun xatoni bazaga joylashtirish kerak bo'lsa juda foydali.
Bir nechta istisnolarni qayta ishlash
Agar bitta kod qismi turli xil istisnolarni keltirib chiqarsa, istisnoni turiga asoslanib ba'zi harakatlarni amalga oshirishimiz mumkin bo'ladi, bunday holatlarda biz bir nechta catch bloklarini ishlatamiz:
<?php try { // calling the function triggerException(); } catch (Tutorialsuz $e) { // bu yerda nimadir bajariladi... } catch (Exception $e) { echo "Oops! Some unexpected error occured..."; } ?>
Bir necha catch bloklar orqali ko'p istisnolarni qayta ishlashda esda qolishi kerak bo'lgan muhim nuqtalar:
Exception sinfi qayta ishlayotgan catch blok bloklarni oxirida joylashishi kerak.
catch blok qayta ishlayotgan Exception sinfi boshqa istisnolarni ham qayta ishlashi mumkin, shu bilan birga barcha istisno sinflar Exception sinfning child sinflari hisoblanadi.
Mavzular ro'yhati