2011-01-07 36 views
30

Khi viết lỗi mã, cảnh báo và thông báo có thể xảy ra. Tôi biết ý tưởng đằng sau lỗi. Tôi cho rằng một cảnh báo là có để thông báo cho bạn về một cái gì đó mà có thể gây ra một lỗi, nhưng không phải là một thông báo exaclty như nhau? Tôi cho rằng một thông báo không phải là một thông điệp của một cái gì đó làm đúng;).Sự khác biệt về PHP giữa thông báo và cảnh báo

Nó chỉ là một chút bối rối với tôi. Ai có thể nói sự khác biệt giữa hai cách đó và cách những thông điệp này cần được xử lý.

+0

Cảnh báo có nghĩa là không "điều gì đó có thể gây ra lỗi" nhưng bản thân lỗi đã xảy ra. –

Trả lời

43

Một thông báo là một thông báo tư vấn có nghĩa là "Bạn có lẽ không nên làm những gì bạn đang làm, nhưng tôi sẽ cho bạn làm điều đó anyway"

Phạt cảnh cáo là một thông báo nói rằng "Bạn đang làm điều gì đó sai trái và rất có khả năng sẽ gây ra lỗi trong tương lai, vì vậy hãy sửa nó."

Cả thông báo và cảnh báo sẽ không ngừng thực thi tập lệnh của bạn, mặc dù tôi khuyến khích bạn coi trọng chúng và cố gắng thậm chí không có một thông báo trong ứng dụng của bạn.

26

Sự khác biệt được giải thích ở đây: http://www.php.net/manual/en/errorfunc.constants.php

Specifficaly:

Lỗi:

Fatal run-time errors. These indicate errors that can not be recovered from, such as a memory allocation problem. Execution of the script is halted.

Cảnh báo:

Run-time warnings (non-fatal errors). Execution of the script is not halted.

Thông báo:

Run-time notices. Indicate that the script encountered something that could indicate an error, but could also happen in the normal course of running a script.

1

Theo PHP Manual:

  • CẢNH BÁO - Run-time cảnh báo (lỗi không nghiêm trọng). Việc thực thi tập lệnh không bị tạm dừng.
  • THÔNG BÁO - Thông báo thời gian chạy. Chỉ ra rằng kịch bản đã gặp phải thứ gì đó có thể cho biết lỗi, nhưng cũng có thể xảy ra trong quá trình chạy tập lệnh thông thường.

Cá nhân tôi nghĩ rằng, thông báo cho thấy một số phần mã, có khả năng có thể dẫn đến một số vấn đề, nhưng được giới thiệu cố ý. Trong trường hợp lập trình viên được coi là "biết những gì anh ta đang làm" và để biết về một số tính năng PHP cụ thể (loại phôi, giá trị khởi tạo mặc định, vv).

4

Tôi sẽ không lặp lại các ý nghĩa cụ thể đã được các câu trả lời khác bao trả kỹ lưỡng.

Cảnh báo và thông báo cho biết mức độ "xấu" khác nhau đối với những điều bạn có thể làm sai, nhưng tôi có hướng dẫn PEAR/Zend về điều này: bạn phải luôn mã hóa E_STRICT, có nghĩa là bạn không nên nâng cảnh báo hoặc thông báo.

Nếu bạn theo dõi tính tương thích của E_STRICT, sự khác biệt giữa thông báo và cảnh báo là loại dự phòng nếu cả hai được coi là "Lỗi không nghiêm trọng mà bạn nên chắc chắn không xảy ra" - cả hai đều là cảnh báo cơ bản.

5
  • THÔNG BÁO: đây là thông điệp ngắn để nói phải làm gì hoặc không làm gì.
  • CẢNH BÁO: occcurs tại thời gian chạy. Thực thi mã vẫn tiếp tục.
  • L ERI: điều này cũng xảy ra vào thời gian chạy, việc thực thi chấm dứt.
2
  • THÔNG BÁO: Đó là một thông điệp cho rằng những gì bạn nên làm và những gì bạn không nên làm.
  • CẢNH BÁO: Nó xảy ra tại thời gian chạy. Nhưng nó không làm gián đoạn quá trình thực thi Mã.
  • ERROR: Nó cũng xảy ra tại thời gian chạy, nhưng việc thực thi chương trình không được tiếp tục chấm dứt.
Các vấn đề liên quan