ใน PHP เวอร์ชันก่อนหน้า หากเราต้องการจับข้อยกเว้น เราจำเป็นต้องเก็บไว้ในตัวแปรเพื่อตรวจสอบว่าตัวแปรนั้นถูกใช้หรือไม่
ก่อน PHP 8 เพื่อจัดการบล็อก catch ข้อยกเว้น เราจำเป็นต้องจับข้อยกเว้น (ที่โยนโดยบล็อก try) ไปยังตัวแปร
ตัวอย่าง: Capturing Exception Catches ใน PHP
<?php
function foo()
{
try{
throw new Exception('Hello');
}
catch (Exception $e) {
return $e->getMessage();
}
} ?>
คำอธิบาย - ในโปรแกรมด้านบน ข้อยกเว้นถูกจับโดยบล็อก catch ไปยัง ตัวแปร $e ตอนนี้ ตัวแปร $e สามารถเก็บข้อมูลเกี่ยวกับข้อยกเว้นได้ เช่น รหัส ข้อความ ฯลฯ
PHP 8 นำเสนอ non-capturing catches ตอนนี้สามารถจับข้อยกเว้นได้โดยไม่ต้องจับไว้ในตัวแปร ตอนนี้เราสามารถละเว้นตัวแปรได้
ตัวอย่าง: Non-Capturing Exception Catches ใน PHP 8
<?php
try{
throw new Exception('hello');
}
catch (Exception) { // ตัวแปร $e ถูกละเว้น } ?>
หมายเหตุ: ในโปรแกรมด้านบน เราไม่ได้ใช้ $e ตัวแปรเพื่อเก็บข้อมูลข้อยกเว้น