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

Nội dung chính Hiển thị

  • Php đơn giản thử bắt ví dụ
  • Xử lý lỗi PHP từ khóa
  • PHP try started with many exception type
  • Khi nào nên sử dụng, hãy thử bắt dữ liệu
  • Tạo các loại ngoại lệ PHP tùy chỉnh
  • Xử lý ngoại lệ PHP toàn cầu
  • Cách đăng nhập đúng các ngoại lệ trong PHP của bạn, hãy thử Catch Blocks
  • Cách sử dụng Try Catch with MySQL
  • Cách xem tất cả các ngoại lệ PHP ở một nơi
  • BẢNG XÁC SUẤT
  • Tôi có thể sử dụng bắt thử trong PHP không?
  • Khi nào bạn nên sử dụng thử Catch Block trong PHP?
  • Phiên bản PHP nào bao gồm try Catch Exception?
  • Cuối cùng cố gắng bắt giữ là gì trong PHP?

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óa

Các từ khóa sau được sử dụng để xử lý ngoại lệ PHP

  • Please try. Khối thử nghiệm chứa mã có thể có khả năng ném một ngoại lệ. Tất cả các mã trong khối thử nghiệm đều được thực thi cho đến khi một ngoại lệ có khả năng bị ném. Khối thử chứa mã có khả năng đưa ra một ngoại lệ. Tất cả mã trong khối thử được thực thi cho đến khi có khả năng xảy ra ngoại lệ
  • Ném. Ném từ khóa được sử dụng để thông báo hiệu xuất hiện của ngoại lệ PHP. Thời gian chạy PHP sau đó sẽ cố gắng tìm một câu lệnh bắt để xử lý ngoại lệ. Từ khóa throw được sử dụng để báo hiệu sự xuất hiện của một ngoại lệ PHP. Sau đó, bộ thực thi PHP sẽ cố gắng tìm một câu lệnh bắt để xử lý ngoại lệ
  • Con dơi. Khối mã này sẽ chỉ được gọi nếu có lỗi xảy ra trong khối mã thử nghiệm. Mã trong câu lệnh bắt buộc của bạn phải xử lý ngoại lệ đã bị ném. Khối mã này sẽ chỉ được gọi nếu có ngoại lệ xảy ra trong khối mã thử. Mã trong câu lệnh bắt của bạn phải xử lý ngoại lệ đã được đưa ra
  • Cuối cùng. Trọng Php 5. 5, last command has been started. Khối cuối cùng cũng có thể được định nghĩa sau hoặc thay thế vì các khối bắt. Mã trong khối cuối cùng sẽ luôn được thực thi sau khi thử và bắt các khối, bất kể ngoại lệ có bị ném hay không, và trước khi thực hiện bình thường tiếp tục. Điều này rất hữu ích cho các vấn đề như đóng kết nối cơ sở dữ liệu bất kể ngoại lệ có xảy ra hay không. Trong PHP5. 5, tuyên bố cuối cùng được giới thiệu. Khối cuối cùng cũng có thể được chỉ định sau hoặc thay vì khối bắt. Mã trong khối cuối cùng sẽ luôn được thực thi sau khối thử và bắt, bất kể ngoại lệ đã được ném hay chưa và trước khi tiếp tục thực thi bình thường. Điều này hữu ích cho các tình huống như đóng kết nối cơ sở dữ liệu bất kể có xảy ra ngoại lệ hay không

PHP try started with many exception type

Hỗ 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ệu

In 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ỉnh

PHP 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ầu

Trong 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 Blocks

Ghi 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 MySQL

Cá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

PDO

Trong 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ố 8

Tì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ơi

Xử 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ẤT

Trong 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

Chủ Đề