Giới thiệu
Trước phiên bản 7, trình phân tích cú pháp PHP được sử dụng để báo cáo lỗi theo các điều kiện khác nhau. Mỗi lỗi từng thuộc một loại được xác định trước. PHP7 đã thay đổi cơ chế báo lỗi. Thay vì báo cáo lỗi truyền thống, hầu hết các lỗi hiện được báo cáo bằng cách đưa ra các ngoại lệ lỗi.
Nếu các ngoại lệ lỗi không được xử lý, một lỗi nghiêm trọng sẽ được báo cáo và sẽ được xử lý giống như tình trạng lỗi truyền thống. Hệ thống thứ cấp lỗi của PHP bắt đầu từ Có thể ném giao diện. Tất cả các lỗi được xác định trước, chẳng hạn như ArithmeticError , AssertionError , CompileError và TypeError là các lớp triển khai Iterface Throwable. Ngoại lệ trong PHP 7 cũng được triển khai giao diện Throwable.
Giao diện có thể ném hoạt động như cơ sở cho bất kỳ đối tượng nào có thể được ném qua câu lệnh ném, bao gồm cả Lỗi và Ngoại lệ các đối tượng. Một lớp do người dùng xác định không thể triển khai trực tiếp giao diện Throwable. Thay vào đó, để khai báo một lớp ngoại lệ do người dùng xác định, nó phải mở rộng Exception lớp học.
Xử lý ngoại lệ của PHP bao gồm ném , bắt , thử các câu lệnh. Để nâng đối tượng ngoại lệ, có ném từ khóa. Ngoại lệ ném được xử lý bởi catch khối. Mã PHP có khả năng dễ bị tấn công vì ngoại lệ được bao gồm trong try khối.
Một hoặc nhiều khối bắt có thể có mặt để bắt các trường hợp khác nhau của các lớp Ngoại lệ. Khi không có ngoại lệ nào xảy ra trong khối try, quá trình thực thi bình thường sẽ tiếp tục sau khối bắt cuối cùng. Tuy nhiên, khi ngoại lệ được ném bên trong khối try, thay vì câu lệnh lồng được thực thi, PHP cố gắng tìm một khối bắt khớp với loại ngoại lệ được xử lý. Nếu không có khối bắt phù hợp nào được xác định, trình phân tích cú pháp PHP sẽ báo cáo Lỗi nghiêm trọng với Uncaught Exception tin nhắn.
Bạn cũng có thể cung cấp cuối cùng chặn sau hoặc thay vì bắt khối. Mã trong khối cuối cùng sẽ luôn được thực thi, bất kể có ngoại lệ xảy ra bên trong khối thử hay không.