Php thử bắt chết
Khi phiên bản Php 5 được phát hành, nó đã kết hợp một mô hình phân tích để bắt lỗi và ngoại lệ. Xử lý lỗi trong PHP với các khối cố gắng thử gần giống như xử lý các lỗi trong các ngôn ngữ lập trình khác Show
Nội dung chính Hiển thị
Khi một ngoại lệ PHP bị ném, thời gian chạy PHP tìm kiếm một câu lệnh bắt có thể xử lý các ngoại lệ đó. Nó sẽ tiếp tục kiểm tra các phương thức gọi lên dấu ngăn xếp cho đến khi tìm thấy câu lệnh bắt. Nếu một người không tìm thấy, ngoại lệ được trao cho Trình xử lý ngoại lệ toàn cầu mà chúng tôi cũng sẽ đề cập trong bài viết này Php đơn giản thử bắt ví dụDưới đây là một ví dụ về câu lệnh Catch try PHP cơ bản try { // run your code here } catch (exception $e) { //code to handle the exception } finally { //optional code that always runs } Xử lý lỗi PHP từ khóaCác từ khóa sau được sử dụng để xử lý ngoại lệ PHP
PHP try started with many exception typeHỗ trợ PHP bằng nhiều khối bắt trong Try Catch. Điều khoản này cho phép chúng tôi tùy chỉnh mã của chúng tôi dựa trên loại ngoại lệ đã bị ném. Điều này rất hữu ích để tùy chỉnh cách bạn hiển thị thông báo lỗi cho người dùng hoặc nếu bạn có khả năng thử lại điều gì đó không thành công lần đầu tiên try { // run your code here } catch (Exception $e) { echo $e->getMessage(); } catch (InvalidArgumentException $e) { echo $e->getMessage(); } Khi nào nên sử dụng, hãy thử bắt dữ liệuIn Php version 5. 5, last block has been added to. Đôi khi trong mã xử lý lỗi PHP của bạn, bạn cũng sẽ muốn sử dụng phần cuối cùng. Cuối cùng cũng hữu ích cho việc xử lý ngoại lệ, nó được sử dụng để thực hiện mã thu gọn Dẹp như đóng tệp, đóng kết nối cơ sở dữ liệu, v. v Khối cuối cùng luôn thực hiện khi khối thử thoát ra. Điều này chắc chắn rằng khối cuối cùng được thực thi ngay cả khi xảy ra ngoại lệ bất ngờ. Điều này đảm bảo rằng khối cuối cùng được thực thi ngay cả khi xảy ra ngoại lệ không mong muốn Ví dụ hãy thử bắt dữ liệu try { print "this is our try block n"; throw new Exception(); } catch (Exception $e) { print "something went wrong, caught yah! n"; } finally { print "this part is always executed n"; } Dưới đây là sơ đồ để xem chương trình hoạt động như thế nào Tạo các loại ngoại lệ PHP tùy chỉnhPHP cũng cho phép tạo các loại tùy chỉnh ngoại lệ. Điều này có thể hữu ích để tạo ra các tùy chỉnh ngoại lệ trong ứng dụng của bạn mà bạn có thể xử lý các ngoại lệ đặc biệt xung quanh Để tạo một tùy chọn xử lý ngoại lệ tùy chỉnh, chúng ta phải tạo một lớp đặc biệt với các chức năng có thể được gọi khi xảy ra ngoại lệ. Lớp phải là một phần mở rộng của lớp ngoại lệ class DivideByZeroException extends Exception {}; Lớp ngoại lệ tùy chỉnh kế thừa các thuộc tính từ lớp ngoại lệ PHP và bạn có thể thêm các chức năng tùy chỉnh vào nó. Bạn có thể không muốn hiển thị tất cả các chi tiết của một ngoại lệ cho người dùng hoặc bạn có thể hiển thị thông báo thân thiện với người dùng và đăng nhập thông báo lỗi trong nội bộ để theo dõi. lớp ngoại lệ và bạn có thể thêm các chức năng tùy chỉnh vào nó. Bạn có thể không muốn hiển thị tất cả các chi tiết của một ngoại lệ cho người dùng hoặc bạn có thể hiển thị một thông báo thân thiện với người dùng và ghi thông báo lỗi nội bộ để theo dõi Mẫu dưới đây sử dụng ngoại lệ PHP tùy chỉnh với nhiều câu lệnh bắt class DivideByZeroException extends Exception {}; class DivideByNegativeException extends Exception {}; function process_divide($denominator) { try { if ($denominator == 0) { throw new DivideByZeroException(); } else if ($denominator < 0) { throw new DivideByNegativeException(); } else { echo 100 / $denominator; } } catch (DivideByZeroException $ex) { echo "Divide by zero exception!"; } catch (DivideByNegativeException $ex) { echo "Divide by negative number exception!"; } catch (Exception $x) { echo "UNKNOWN EXCEPTION!"; } } Mã trên ném một ngoại lệ và bắt nó với một lớp ngoại lệ tùy chỉnh. Các lớp DividebyzeroException () và DividebyNegativeXception () được tạo dưới dạng các phần mở rộng của lớp ngoại lệ hiện có; . Khối thử nghiệm của người Viking được thực thi và một ngoại lệ bị ném nếu mẫu số bằng 0 hoặc số âm. Block Catch bắt lỗi ngoại lệ và hiển thị thông báo lỗi Sơ đồ dưới đây tóm tắt cách mã hóa mẫu của chúng tôi đang hoạt động cho các loại tùy chỉnh ngoại lệ có thể chỉnh sửa Xử lý ngoại lệ PHP toàn cầuTrong một thế giới hoàn hảo, mã của bạn sẽ thực hiện xử lý ngoại lệ thích hợp. Như một thành quả tốt nhất, bạn cũng nên định cấu hình một trình xử lý ngoại lệ PHP toàn cầu. Nó sẽ được gọi trong trường hợp một ngoại lệ chưa được xử lý xảy ra mà không được gọi trong một khối thử nghiệm PHP thích hợp Để cấu hình trình xử lý ngoại lệ PHP toàn cầu, chúng tôi sẽ sử dụng chức năng SET_Exception_handler() để đặt hàm do người dùng xác định để xử lý tất cả các ngoại lệ chưa được thực hiện function our_global_exception_handler($exception) { //this code should log the exception to disk and an error tracking system echo "Exception:" . $exception->getMessage(); } set_exception_handler(‘our_global_exception_handler’); Cách đăng nhập đúng các ngoại lệ trong PHP của bạn, hãy thử Catch BlocksGhi nhật ký thường là mắt và tai cho hầu hết các nhà phát triển khi nói đến việc giải quyết sự cố ứng dụng. Các ngoại lệ đăng nhập để bạn có thể tìm thấy chúng sau khi chúng xảy ra là một phần thực sự quan trọng của việc xử lý lỗi PHP Hãy dùng thử Stackify Code Profiler miễn phí, tiền tố, để viết mã tốt hơn trên máy trạm của bạn. Active profixed with. NET, Java, PHP, Nút. js, Ruby và Python Nhật ký lỗi rất quan trọng trong quá trình phát triển vì nó cho phép các nhà phát triển xem cảnh báo, lỗi, thông báo, v. v. đã được ghi lại trong khi ứng dụng đang chạy. Nói rằng bạn có thể xử lý chúng theo một cách thích hợp thông qua các kỹ thuật xử lý ngoại lệ PHP thử bắt chúng ta vừa học Tùy thuộc vào các khung PHP bạn đang sử dụng, cho dù Laravel, Codeigniter, Symfony hoặc những người khác, họ có thể cung cấp các khung ghi nhật ký hợp nhất. Bạn cũng có thể sử dụng Monolog, đây là thư viện ghi nhật ký PHP tiêu chuẩn. Bất kể các khung ghi nhật ký bạn đang sử dụng, bạn luôn muốn ghi lại các ngoại lệ quan trọng đang được ném vào mã của bạn Dưới đây là một mẫu thử/ghi lại lỗi với Monolog require_once(DIR.'/vendor/autoload.php'); use MonologLogger; use MonologHandlerStreamHandler; $logger = new Logger('channel-name'); $logger->pushHandler(new StreamHandler(DIR.'/app.log', Logger::DEBUG)); try { // Code does some stuff // debug logging statement $logger->info('This is a log! ^_^ '); } catch (Exception $ex) { $logger->error('Oh no an exception happened! '); } Cách sử dụng Try Catch with MySQLCác thư viện PHP cho MySQL, PDO và MySQLI, có các chế độ khác nhau để xử lý lỗi. Nếu bạn không có ngoại lệ cho phép các thư viện đó, bạn có thể sử dụng các khối thử nghiệm. Điều này làm cho các lỗi xử lý khác nhau và có thể phức tạp hơn PDOTrong PDO, bạn phải bật ERRMode_Exception khi tạo kết nối // connect to MySQL $conn = new PDO('mysql:host=localhost;dbname=stackifydb;charset=utf8mb4', 'username', 'password'); //PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); Tìm hiểu thêm về các thuộc tính PDO từ các tài liệu PHP mysqlĐối với mysqli, bạn phải làm điều gì đó tương tự ________số 8Tìm hiểu thêm từ các tài liệu MySQL Cách xem tất cả các ngoại lệ PHP ở một nơiXử lý ngoại lệ thích hợp trong PHP là rất quan trọng. Là một phần trong đó, bạn không muốn đăng nhập các ngoại lệ của mình vào tệp nhật ký và không bao giờ biết chúng có thể xảy ra Giải pháp là sử dụng một giải pháp theo dõi lỗi như truy xuất. Tất cả các lỗi được ghi lại giống nhau với một số chi tiết quan trọng về lỗi đó, bao gồm cả thời gian nó xảy ra, phương pháp gây ra nó và các ngoại lệ. Lấy lại cung cấp nhiều tính năng theo dõi và giám sát lỗi quan trọng. Bao gồm khả năng nhìn thấy tất cả ngoại trừ ở một nơi, xác định các lỗi duy nhất, nhanh chóng tìm ra lỗi mới sau khi khai triển, thông báo qua email về các lỗi mới và nhiều hơn nữa Xếp chồng Lỗi và công cụ quản lý nhật ký có thể giúp bạn dễ dàng theo dõi và giải quyết sự cố ứng dụng của bạn BẢNG XÁC SUẤTTrong hướng dẫn này, chúng tôi đã chỉ ra cách sử dụng PHP để thử các khối bắt. Chúng tôi cũng đề cập đến một số cách sử dụng nâng cao với nhiều loại ngoại lệ và thậm chí cả cách đăng nhập tất cả các lỗi của bạn vào thư viện ghi nhật ký. Xử lý lỗi tốt thực sự tốt nhất là rất quan trọng đối với bất kỳ ứng dụng PHP nào. Lấy lại có thể giúp bạn nhanh chóng tìm thấy và giải quyết tất cả các ngoại lệ đang được ném vào mã của bạn |