Hướng dẫn where do i put try catch in php? - Tôi đặt thử bắt trong php ở đâu?

Khi Php phiên bản 5 được phát hành, nó đã kết hợp một mô hình tích hợp để bắt lỗi và ngoại lệ. Xử lý lỗi trong PHP với các khối thử thử gần giống như xử lý các lỗi trong các ngôn ngữ lập trình khác.

Khi một ngoại lệ PHP được ném, thời gian chạy PHP tìm kiếm một câu lệnh bắt có thể xử lý loại ngoại lệ đó. Nó sẽ tiếp tục kiểm tra các phương thức gọi lên dấu vết 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 được 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 thử 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.

  • Hãy thử: Khối thử 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ử được thực thi cho đến khi một ngoại lệ có khả năng bị ném. The try block contains the code that may potentially throw an exception. All of the code within the try block is executed until an exception is potentially thrown.
  • Ném: Từ khóa ném được sử dụng để báo hiệu sự 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ệ.The throw keyword is used to signal the occurrence of a PHP exception. The PHP runtime will then try to find a catch statement to handle the exception.
  • Bắt: Khối mã này sẽ chỉ được gọi nếu một 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 ném. This block of code will be called only if an exception occurs within the try code block. The code within your catch statement must handle the exception that was thrown.
  • Cuối cùng: Trong Php 5.5, câu lệnh 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ì 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 tình huống như đóng kết nối cơ sở dữ liệu bất kể ngoại lệ có xảy ra hay không. In PHP 5.5, the finally statement is introduced. The finally block may also be specified after or instead of catch blocks. Code within the finally block will always be executed after the try and catch blocks, regardless of whether an exception has been thrown, and before normal execution resumes. This is useful for scenarios like closing a database connection regardless if an exception occurred or not.

PHP thử bắt với nhiều loại ngoại lệ

PHP hỗ trợ bằng nhiều khối bắt trong thử Catch. Điều 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ệ đã được 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 thứ 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

Trong Php phiên bản 5.5, khối cuối cùng đã được thêm vào. Đô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ã dọ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 đảm bảo rằng khối cuối cùng được thực thi ngay cả khi xảy ra ngoại lệ bất ngờ. This ensures that the finally block is executed even if an unexpected exception occurs.

Ví dụ cho 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ơ đồ cho thấy chương trình hoạt động như thế nào.

Hướng dẫn where do i put try catch in php? - Tôi đặt thử bắt trong php ở đâu?

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 ngoại lệ tùy chỉnh. Điều này có thể hữu ích để tạo các ngoại lệ tùy chỉnh trong ứng dụng của bạn mà bạn có thể có xử lý ngoại lệ đặc biệt xung quanh.

Để tạo một trình 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.Exception class and you can add custom functions to it. You may not want to display all the details of an exception to the user or you can display a user-friendly message and log the error message internally for monitoring.

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ó; Bằng cách này, nó kế thừa tất cả các phương thức và thuộc tính từ lớp ngoại lệ. Khối thử thử của người Viking được thực thi và một ngoại lệ được ném nếu mẫu số bằng 0 hoặc số âm. Khối Catch Catch bắt gặp ngoại lệ và hiển thị thông báo lỗi.

Sơ đồ dưới đây tóm tắt cách mã mẫu của chúng tôi ở trên hoạt động cho các loại ngoại lệ tùy chỉnh.

Hướng dẫn where do i put try catch in php? - Tôi đặt thử bắt trong php ở đâu?

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ực tiễn 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ử PHP thích hợp.

Để định 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 khắc phục 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 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. Tiền tố hoạt động với .NET, Java, PHP, Node.js, Ruby và Python.

Nhật ký lỗi là 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. Rằng bạn có thể xử lý chúng 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 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ý tích hợp. 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ể khung ghi nhật ký bạn đang sử dụng, bạn muốn luô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ử/bắt 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 thử Catch với 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ử. Điều này làm cho lỗi xử lý khác nhau và có lẽ 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ự:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

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 xảy ra.

Giải pháp là sử dụng một giải pháp theo dõi lỗi như Retrace. Tất cả các lỗi được ghi lại cùng 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à loại 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 triển khai, 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à khắc phục sự cố ứng dụng của bạn.

Hướng dẫn where do i put try catch in php? - Tôi đặt thử bắt trong php ở đâu?

Bản tóm tắ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á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 tiễn 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à khắc phục tất cả các ngoại lệ đang được ném vào mã của bạn.

  • Thông tin về các Tác giả
  • Bài viết mới nhất

Tôi có thể sử dụng thử bắt trong PHP không?

Sử dụng thử Catch- Cuối cùng hãy thử bắt trong PHP là một khối chứa mã quan trọng của chương trình để thực thi. Trong PHP, khối cuối cùng cũng được sử dụng để làm sạch mã. Sự khác biệt duy nhất là nó luôn luôn chạy bất kể ngoại lệ có bị ném hay không.Try catch in PHP is a block that contains the program's vital code for execution. In PHP, the finally block is also used to clean up the code. The only difference is that it always runs regardless of whether or not an exception is thrown.

Khi nào bạn nên sử dụng thử Catch Block trong PHP?

Bắt khối để bắt tất cả các trường hợp ngoại lệ trong toàn bộ ứng dụng được hiển thị cho người dùng, ví dụ, lỗi 500 và ngoại lệ được ghi lại với nhiều thông tin hơn vào cơ sở dữ liệu.to catch all exceptions throughout the application which are shown to user as, for example, error 500s and exception is logged with more information to database.

Phiên bản PHP nào bao gồm thử Catch Exception?

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ệ.Bắt: Khối mã này sẽ chỉ được gọi nếu một 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 ném.Cuối cùng: Trong Php 5.5, câu lệnh cuối cùng được giới thiệu.PHP 5.5, the finally statement is introduced.

Cố bắt cuối cùng là gì trong PHP?

Trong Try-Catch, khối cuối cùng được sử dụng để thực thi một khối mã cho dù có xảy ra lỗi hay không.Nó có thể được sử dụng để tiếp tục luồng của ứng dụng mặc dù xảy ra lỗi khi cùng một mã được đặt trong khối bắt.used to execute a code block whether or not an error occurs. It can be used to continue the flow of the application even though an error occurs when the same code is placed in the catch block.