<?php
function some_function($arg) {
if($filter->check_for_safe_input($arg)) {
throw new Exception("Hacking Attempt");
}
do_some_database_stuff($arg);
}
?>
Trong ví dụ mã ở trên, do_some_database_stuff
có được gọi nếu check_for_safe_input
không thành công hay không, ngoại trừ chức năng có chạy không? Đó là một cái gì đó tôi đã không bao giờ khá chắc chắn, và thường tôi chỉ dính các chức năng như do_some_database_stuff
trong một tuyên bố khác để chắc chắn, nhưng điều này có xu hướng dẫn đến các chức năng lồng nhau.Ngoại lệ PHP có dừng thực thi không?
Điều gì sẽ xảy ra nếu nó bị chặn trong chức năng gọi điện thoại này? Phần còn lại của hàm này có được chạy không? –
Không, khi bạn ném một ngoại lệ, việc thực thi chức năng bị dừng lại (như thể bạn trả về một số kết quả) và các bong bóng ngoại lệ thông qua ngăn xếp cuộc gọi cho đến khi nó tìm thấy câu lệnh 'catch'. –
Không, quá trình thực hiện tiếp tục trong chức năng bắt; bạn không thể (trong PHP) tiếp tục thực hiện từ nơi mà một ngoại lệ đã dừng nó. – bobince