Trước PHP 8. 0, nó không được phép đưa ra một ngoại lệ khi một biểu thức được mong đợi. Bây giờ có thể đưa ra một ngoại lệ trong các hàm mũi tên, biểu thức bậc ba hoặc bất kỳ nơi nào khác mà trình phân tích cú pháp PHP mong đợi một biểu thức duy nhất
Hàm mũi tên
$fn = fn[] => throw new \Exception['oops'];
biểu thức bậc ba
$value = isset[$_GET['value']]
? $_GET['value']
: throw new \InvalidArgumentException['value not set'];
$value ??= throw new \InvalidArgumentException['value not set'];
$foo = $bar ?: throw new \InvalidArgumentException['$bar is falsy'];
$foo = $bar ?? throw new \InvalidArgumentException['$bar is not set'];
Tất cả các đoạn trên đều được cho phép kể từ PHP 8. 0
Các phiên bản trước 8. 0 gây ra lỗi phân tích cú pháp
Parse error: syntax error, unexpected 'throw' [T_THROW] in .. on line ...
Tác động tương thích ngược
Việc sử dụng
Parse error: syntax error, unexpected 'throw' [T_THROW] in .. on line ...
3 trong một biểu thức trước đây đã gây ra lỗi phân tích cú pháp, do đó sẽ không có thay đổi vi phạm thực tế nào khi bạn nâng cấp lên PHP 8Tuy nhiên, lưu ý rằng không có cách nào để làm cho bất kỳ mã nào mà
Parse error: syntax error, unexpected 'throw' [T_THROW] in .. on line ...
3 trong một biểu thức hoạt động trơn tru trong các phiên bản PHP trước PHP 8. Nếu khả năng tương thích với các phiên bản cũ hơn là một mối lo ngại, hãy ngừng sử dụng Parse error: syntax error, unexpected 'throw' [T_THROW] in .. on line ...
3 trong các biểu thức Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu chi tiết về lớp Exception và cách ném một ngoại lệ mới trong PHP
Giới thiệu về lớp Ngoại lệ
Khi gặp một tình huống mà bạn không thể phục hồi, bạn có thể ném một ngoại lệ
Một ngoại lệ là một thể hiện của lớp
Parse error: syntax error, unexpected 'throw' [T_THROW] in .. on line ...
6. Giống như các đối tượng PHP khác, bạn sử dụng từ khóa Parse error: syntax error, unexpected 'throw' [T_THROW] in .. on line ...
7 để tạo một thể hiện của lớp Parse error: syntax error, unexpected 'throw' [T_THROW] in .. on line ...
6Một đối tượng
Parse error: syntax error, unexpected 'throw' [T_THROW] in .. on line ...
6 có hai thuộc tính chính. một tin nhắn và một mã số. Thông báo mô tả ngoại lệ. Mã số là tùy chọn, chỉ định ngữ cảnh cho một ngoại lệ cụ thểKhi bạn tạo một ngoại lệ mới, bạn cung cấp cho thông báo mã số tùy chọn. Ví dụ