Làm thế nào để biến error thành exception trong PHP?

{{FormatNumbertoThousand(model.total_like)}} lượt thích
126 lượt xem
PHP senior

Vấn đề:

Tôi cần bắt giữ một số warning được đưa ra từ một số hàm gốc của php và sau đó xử lý chúng. try / catch không hoạt động vì warning không phải là exception. Bạn có thể giúp biến error thành exception trong PHP không?

Giải pháp:

Bạn có thể sử dụng set_error_handler() và lớp ErrorException để biến tất cả các php error thành exception.

set_error_handler(function($errno, $errstr, $errfile, $errline, $errcontext) {
   // error was suppressed with the @-operator
   if (0 === error_reporting()) {
      return false;
   } 

   throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
});

try {
   dns_get_record();
} catch (ErrorException $e) {
   // ...
}

Điều quan trọng cần lưu ý khi sử dụng trình xử lý error của riêng bạn là nó sẽ bỏ qua cài đặt error_reporting và chuyển tất cả các error (notice, warning, v.v.) cho trình xử lý error của bạn. Bạn có thể đặt đối số thứ hai trên set_error_handler() để xác định loại error nào bạn muốn nhận hoặc truy cập cài đặt hiện tại bằng cách sử dụng ... = error_reporting() bên trong trình xử lý error.

{{login.error}}