千家信息网

php如何进行错误和异常处理

发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,小编给大家分享一下php如何进行错误和异常处理,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在php中,可以利用异常处理类"Exception"中内置的各种成员函数来获取并返回异常数
千家信息网最后更新 2024年12月12日php如何进行错误和异常处理

小编给大家分享一下php如何进行错误和异常处理,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

在php中,可以利用异常处理类"Exception"中内置的各种成员函数来获取并返回异常数据,例如getMessage()函数就可以返回异常的消息内容;也可以通过"try catch"语句和"throw"关键字来捕获程序中的异常。

本教程操作环境:windows7系统、PHP7.1版,DELL G3电脑

PHP 中的异常处理类

PHP 中提供了内置的异常处理类--Exception,该类中常用的成员函数如下所示:

  • getMessage():返回异常的消息内容;

  • getCode():以数字形式返回异常代码;

  • getFile():返回发生异常的文件名;

  • getLine():返回发生错误的代码行号;

  • getTrace():返回 backtrace() 数组;

  • getTraceAsString():返回已格式化成字符串的、由函数 getTrace() 函数所产生的信息;

  • __toString():产生异常的字符串信息,它可以重载。注意,该函数最前部是两个下划线。

下面代码是 Exception 类的完整代码,从这个类的定义可以看出哪些属性和方法(成员函数)在用户派生的子类中是可以访问和继承的。

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}

捕获程序中的异常

在 PHP 中想要捕获程序中的异常,需要使用 try catch 语句和 throw 关键字来实现。try catch 语句和流程控制语句类似,所以可以通过 try catch 语句来实现一种另类的条件选择结构,而 throw 关键字则可以抛出一个异常。try catch 语句的语法格式如下:

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

需要进行异常处理的代码都必须放入 try 代码块内,以便捕获可能存在的异常。每一个 try 至少要有一个与之对应的 catch。使用多个 catch 可以捕获不同的类所产生的异常。

当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch 的后面继续执行。

在 PHP 代码中所产生的异常可以被 throw 语句抛出并被 catch 语句捕获。当然,PHP 允许在 catch 代码块内再次抛出(throw)异常。

当一个异常被抛出时,其后的代码不会再继续执行,而 PHP 就会尝试继续查找第一个能与之匹配的 catch。如果一个异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,将会产生一个严重的错误,并且输出 UncaughtException...(未捕获异常)的提示信息。

【示例】使用 try catch 和 throw 捕获程序中的异常。

';    }catch(Exception $e){        echo '捕获异常:'.$e->getMessage().'
错误代码:'.$e->getCode().'
'; } echo '继续执行 try catch 语句之外的代码';?>

运行结果如下:

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

示例代码中,在 try 语句块中试着判断当前目录下是否存在名为 test 的目录,如果不存在这个目录,那么就会执行第 7 行的代码,通过关键字 throw 抛出异常。这个异常是一个 Exception 类的对象,通过 new 关键字生成,并且用错误信息 $err 和错误代码 12345 初始化该对象,以便后面 catch 该异常时(代码第 11 行),可以获取这些信息。

一旦抛出异常,那么 try 语句块中剩下的代码就不再继续执行,程序流程转至相应的 catch 语句块执行,最终通过 Exception 对象调用其成员函数输出错误信息和代码。

看完了这篇文章,相信你对"php如何进行错误和异常处理"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

0