Home >Backend Development >PHP Problem >How to handle errors and exceptions in php

How to handle errors and exceptions in php

青灯夜游
青灯夜游Original
2021-09-06 10:55:383732browse

In PHP, you can use various built-in member functions in the exception handling class "Exception" to obtain and return exception data. For example, the getMessage() function can return the exception message content; you can also use "try catch" statement and the "throw" keyword to catch exceptions in the program.

How to handle errors and exceptions in php

The operating environment of this tutorial: windows7 system, PHP7.1 version, DELL G3 computer

Exception handling class in PHP

PHP provides a built-in exception handling class - Exception. The commonly used member functions in this class are as follows:

  • getMessage(): Return exception Message content;

  • getCode(): Returns the exception code in numeric form;

  • getFile(): Returns the file name where the exception occurred;

  • getLine(): Returns the code line number where the error occurred;

  • getTrace(): Returns the backtrace() array;

  • getTraceAsString(): Returns the information generated by the getTrace() function that has been formatted into a string;

  • __toString(): generates an exception String information, which can be overloaded. Note that the function is preceded by two underscores.

The following code is the complete code of the Exception class. From the definition of this class, we can see which properties and methods (member functions) can be accessed and inherited in user-derived subclasses. .

Exception {
    /* 属性 */
    protected string $message ;
    protected int $code ;
    protected string $file ;
    protected int $line ;
    /* 方法 */
    public __construct ([ string $message = "" [, int $code = 0 [, Throwable $previous = NULL ]]] )
    final public getMessage ( void ) : string
    final public getPrevious ( void ) : Throwable
    final public getCode ( void ) : int
    final public getFile ( void ) : string
    final public getLine ( void ) : int
    final public getTrace ( void ) : array
    final public getTraceAsString ( void ) : string
    public __toString ( void ) : string
    final private __clone ( void ) : void
}

Catching exceptions in the program

In PHP, if you want to catch exceptions in the program, you need to use the try catch statement and the throw keyword to achieve it. The try catch statement is similar to the flow control statement, so you can use the try catch statement to implement an alternative conditional selection structure, and the throw keyword can throw an exception. The syntax format of the try catch statement is as follows:

try{
    // 可能出现异常或错误的代码,比如文件操作、数据库操作等
}catch(Exception $e){    // $e 为一个异常类的对象
    // 输出错误信息
}

Code that requires exception handling must be placed in the try code block in order to catch possible exceptions. Every try must have at least one corresponding catch. Use multiple catches to catch exceptions generated by different classes.

When the try code block no longer throws an exception or no catch can be found to match the thrown exception, the PHP code will continue execution after jumping to the last catch.

Exceptions generated in PHP code can be thrown by the throw statement and caught by the catch statement. Of course, PHP allows exceptions to be thrown again within catch blocks.

When an exception is thrown, the subsequent code will not continue to execute, and PHP will try to continue to find the first matching catch. If an exception is not caught and is not handled accordingly using set_exception_handler(), a serious error will be generated and the UncaughtException... message will be output.

[Example] Use try catch and throw to catch exceptions in the program.

<?php
    try{
        $err = &#39;抛出异常信息,并跳出 try 语句块&#39;;
        if(is_dir(&#39;./test&#39;)){
            echo &#39;这里是一些可能会发生异常的代码&#39;;
        }else{
            throw new Exception($err, 12345);   // 抛出异常
        }
        echo &#39;上面抛出异常的话,这行代码将不会执行,转而执行 catch 中的代码。<br>&#39;;
    }catch(Exception $e){
        echo &#39;捕获异常:&#39;.$e->getMessage().&#39;<br>错误代码:&#39;.$e->getCode().&#39;<br>&#39;;
    }
    echo &#39;继续执行 try catch 语句之外的代码&#39;;
?>

The running results are as follows:

捕获异常:抛出异常信息,并跳出 try 语句块
错误代码:12345
继续执行 try catch 语句之外的代码

In the sample code, in the try statement block, try to determine whether there is a directory named test in the current directory. If this directory does not exist, then it will Execute the code on line 7 and throw an exception using the throw keyword. This exception is an object of the Exception class, generated through the new keyword, and the object is initialized with the error message $err and error code 12345, so that this information can be obtained when the exception is caught later (line 11 of the code).

Once an exception is thrown, the remaining code in the try statement block will no longer continue to execute. The program flow will be transferred to the corresponding catch statement block for execution, and finally the error information and code will be output by calling its member function through the Exception object. .

Recommended learning: "PHP Video Tutorial"

The above is the detailed content of How to handle errors and exceptions in php. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn