Ném PHP

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 8

Tuy 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 ...
6

Mộ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ụ

$exception = new Exception('Invalid username or password', 100);

Code language: HTML, XML (xml)

Đối tượng

Parse error: syntax error, unexpected 'throw' (T_THROW) in .. on line ...
6 có

$exception = new Exception('Invalid username or password', 100); $message = $exception->getMessage(); $code = $exception->getCode();

Code language: HTML, XML (xml)
0 và

$exception = new Exception('Invalid username or password', 100); $message = $exception->getMessage(); $code = $exception->getCode();

Code language: HTML, XML (xml)
1 trả về thông báo và mã số

$exception = new Exception('Invalid username or password', 100); $message = $exception->getMessage(); $code = $exception->getCode();

Code language: HTML, XML (xml)

Tuyên bố ném

Trong thực tế, bạn hiếm khi gán một ngoại lệ cho một biến. Thay vào đó, bạn nâng (hoặc ném) đối tượng

Parse error: syntax error, unexpected 'throw' (T_THROW) in .. on line ...
6 bằng cách sử dụng câu lệnh

$exception = new Exception('Invalid username or password', 100); $message = $exception->getMessage(); $code = $exception->getCode();

Code language: HTML, XML (xml)
3

________số 8

Câu lệnh

$exception = new Exception('Invalid username or password', 100); $message = $exception->getMessage(); $code = $exception->getCode();

Code language: HTML, XML (xml)
3 chấp nhận một thể hiện của lớp
Parse error: syntax error, unexpected 'throw' (T_THROW) in .. on line ...
6 hoặc lớp con của lớp
Parse error: syntax error, unexpected 'throw' (T_THROW) in .. on line ...
6. Trên thực tế, nó chấp nhận bất kỳ đối tượng nào triển khai giao diện

$exception = new Exception('Invalid username or password', 100); $message = $exception->getMessage(); $code = $exception->getCode();

Code language: HTML, XML (xml)
7. Lưu ý rằng lớp
Parse error: syntax error, unexpected 'throw' (T_THROW) in .. on line ...
6 cũng triển khai giao diện

$exception = new Exception('Invalid username or password', 100); $message = $exception->getMessage(); $code = $exception->getCode();

Code language: HTML, XML (xml)
9

Khi PHP gặp một câu lệnh

$exception = new Exception('Invalid username or password', 100); $message = $exception->getMessage(); $code = $exception->getCode();

Code language: HTML, XML (xml)
3, nó sẽ ngay lập tức tạm dừng việc thực thi mã. Do đó, mã sau câu lệnh ném sẽ không thực thi

Ném một ví dụ ngoại lệ

Ví dụ sau định nghĩa một hàm có tên là

throw new Exception('Invalid username or password', 100);

Code language: HTML, XML (xml)
1 sử dụng câu lệnh ném

$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');
4

Hàm

throw new Exception('Invalid username or password', 100);

Code language: HTML, XML (xml)
2 hoạt động như thế nào

  • Đầu tiên, ném ngoại lệ

    throw new Exception('Invalid username or password', 100);

    Code language: HTML, XML (xml)
    3 nếu

    throw new Exception('Invalid username or password', 100);

    Code language: HTML, XML (xml)
    4 và

    throw new Exception('Invalid username or password', 100);

    Code language: HTML, XML (xml)
    5 không phải là số hoặc chuỗi số
  • Thứ hai, ném phép chia theo ngoại lệ bằng 0 nếu

    throw new Exception('Invalid username or password', 100);

    Code language: HTML, XML (xml)
    5 bằng 0
  • Thứ ba, trả lại phép chia của

    throw new Exception('Invalid username or password', 100);

    Code language: HTML, XML (xml)
    4 và

    throw new Exception('Invalid username or password', 100);

    Code language: HTML, XML (xml)
    5

Các lớp ngoại lệ tích hợp PHP

Thư viện chuẩn PHP (SPL) cung cấp nhiều lớp con của lớp

Parse error: syntax error, unexpected 'throw' (T_THROW) in .. on line ...
6. Ví dụ: bạn có thể sử dụng

throw new Exception('Invalid username or password', 100);

Code language: HTML, XML (xml)
3 khi đối số của hàm hoặc phương thức không hợp lệ

Ném trong PHP là gì?

Định nghĩa và cách sử dụng. Từ khóa ném được dùng để ném ngoại lệ . Ngoại lệ là một cách để thay đổi luồng chương trình nếu phát sinh tình huống không mong muốn, chẳng hạn như dữ liệu không hợp lệ.

Ném mới trong PHP là gì?

Ném một ngoại lệ PHP chung chung gần như đơn giản như âm thanh. Tất cả những gì cần làm là khởi tạo một đối tượng ngoại lệ—với tham số đầu tiên của hàm tạo Ngoại lệ là thông báo lỗi—và sau đó, "ném" nó. ném Ngoại lệ mới ('Thông báo ngoại lệ') Điều quan trọng nhất cần lưu ý là thông báo

Ném ngoại lệ trong PHP là gì?

Khi một ngoại lệ được đưa ra, đoạn mã theo sau nó sẽ không được thực thi và PHP sẽ cố gắng tìm khối "bắt" phù hợp . Nếu một ngoại lệ không bị bắt, một lỗi nghiêm trọng sẽ được đưa ra với thông báo "Ngoại lệ chưa được bắt". Hãy thử ném một ngoại lệ mà không bắt nó. //tạo hàm có ngoại lệ.

Làm cách nào để bắt lỗi nghiêm trọng trong PHP?

Đây là một ví dụ về việc phát hiện một lỗi nghiêm trọng trong PHP 7. 1. .
display_errors – có thể được đặt thành false để chặn thông báo
log_errors – có thể được sử dụng để lưu trữ thông báo lỗi trong tệp nhật ký
error_reporting – có thể được đặt để định cấu hình lỗi nào kích hoạt báo cáo