2011-11-04 36 views
11

Tôi đang cố gắng bao gồm một tệp và nắm bắt tệp nếu tệp không tồn tại/không thể mở được. Tôi đã nghĩ rằng một câu lệnh try/catch đơn giản có thể đã làm việc nhưng PHP dường như hoàn toàn bỏ qua nó và lỗi.PHP bắt lỗi không bao gồm

Bất kỳ ý tưởng nào? Tôi biết có những câu hỏi khác như thế này trên stackoverflow, tôi đã nhìn thấy chúng, nhưng không ai trong số họ dường như có một câu trả lời thích hợp, làm việc.

Trả lời

23

Bạn có thể kiểm tra giá trị trả lại bao gồm để xem nếu nó thất bại hay không:

if((@include $filename) === false) 
{ 
    // handle error 
} 

Bạn sẽ lưu ý tôi bao gồm các nhà điều hành đàn áp lỗi (@) để ẩn các thông báo lỗi chuẩn từ được hiển thị.

+2

sử dụng @ là giải pháp rất bẩn – Nicolas

+8

Tôi nghĩ rằng việc sử dụng @, toán tử điều khiển lỗi hoàn toàn ổn nếu bạn xử lý lỗi. Nó chỉ đảm bảo rằng lỗi không thành công bao gồm lỗi không phải là đầu ra nếu cấu hình đã bật cảnh báo như vậy. – drew010

+0

Yup, lý do chính xác tôi muốn làm điều này là để có thể xử lý lỗi;) –

4

Kể từ khi include() trả về false khi không thành công, chỉ cần kiểm tra xem nó có trả về true hay không và sau đó thực hiện điều gì đó như die() hoặc hiển thị lỗi.

if (!include('page.php')) 
    die('Error.'); 
+3

Nếu bạn đang đi đến 'chết', bạn cũng có thể chỉ cần sử dụng [require] (http://php.net/ thủ công/en/function.require.php) mặc dù. –

+0

Vâng, điểm tốt. – Simone

+0

Điều này vẫn hiển thị cảnh báo php. –

Các vấn đề liên quan