Hãy thảo luận về sự khác biệt giữa lỗi (Error) và ngoại lệ (Exception).
- Không thể khôi phục từ Error. Giải pháp duy nhất cho lỗi là kết thúc thực thi. Trong khi chúng ta có thể khôi phục từ Exception bằng cách sử dụng khối try-catch hoặc ném ngoại lệ trở lại cho caller.
- Bạn sẽ không thể xử lý Errors bằng khối try-catch. Ngay cả khi bạn xử lý chúng bằng try-catch, ứng dụng của bạn sẽ không khôi phục nếu chúng xảy ra. Ngược lại, Exception có thể được xử lý bằng try-catch và làm cho luồng chương trình bình thường nếu chúng xảy ra.
- Exception liên quan đến ứng dụng trong khi Error liên quan đến môi trường mà ứng dụng đang chạy.
Ví dụ
<?php
try {
$row->insert();
$inserted = true;
}
catch (Exception $e) {
echo "There was an error inserting the row - ".$e->getMessage();
$inserted = false;
}
echo "Some more stuff";
?>
Giải thích
Thực thi chương trình sẽ tiếp tục - vì bạn đã 'bắt' (caught) ngoại lệ. Một ngoại lệ sẽ được coi như một lỗi trừ khi nó bị bắt. Nó cho phép bạn tiếp tục thực thi chương trình sau khi nó thất bại.
Ví dụ
<?php
$foo = [bar];
echo $foo;
?>
Giải thích
Thực thi chương trình sẽ dừng với PHP Notice: Array to string conversion.