PHP异常处理机制详解

更新时间:2019-10-20 19:18:52 来源:青锋建站 作者:青锋建站
  PHP有一个类似于其他编程语言的异常模型。可以抛出异常,并在PHP中捕获(“捕获”)。代码可能被包围在TRY块中,以便于捕获潜在的异常。每次尝试必须至少有一个相应的捕获或最后块。抛出的对象必须是异常类的实例或异常的子类。尝试抛出一个不是的对象将导致PHP致命错误。以下是青锋建站给大家分享的PHP异常处理的工作原理使用方法与自定义异常处理类的创建使用。

PHP异常处理的概念

错误:是程序出现问题时面向过程的处理方式,就是使用特定的函数来捕获(取得)错误信息并进行异常处理;
异常:是程序出现问题时面向对象的处理方式,就是使用特定的语法来捕获(取得)错误信息并进行异常处理;
当程序发生的问题面向过程的处理方法
  1. ...正常执行程序...
  2. $code=获取出错代号或信息
  3. 判断是否出错,并进行相应处理
当程序发生的问题面向对象的处理方法
Try
{
//正常执行代码;
}
Catch(exception $e)
{       
//上次try范围的语句如果出错,就会自动进入此catch范围;
//其中$e是一个变量(可以用别的名字),是excetpion类的对象    
}
基本使用形式
Try
{
..正常执行程序...可以多条
//这里一旦发生错误,就不再执行后面的代码,直接进入catch范围。
}
Catch(exception $e)
{       
//上次try范围的语句如果出错,就会自动进入此catch范围;
//其中$e是一个变量(可以用别的名字),是excetpion类的对象    
//进行相应的错误处理
//echo $e->GetMessage();异常信息内容
//echo $e->GetCode();异常信息代号
}

PHP自定义异常处理类

  自定义异常类需要继承Exception类,并传递相应的参数,然后在自定义异常类中进行处理。PHP系统的Excetpiont类的形式如下:
1、Excetpiont类
Exception {
/* Properties */
protected string $message ;
private string $string ;
protected int $code ;
protected string $file ;
protected int $line ;
private array $trace ;
/* Methods */
public __construct ([ string $message="" [, int $code=0 [, Exception $previous=NULL ]]] )
final public string getMessage ( void )
final public int getCode ( void )
final public string getFile ( void )
final public int getLine ( void )
final public array getTrace ( void )
final public string getTraceAsString ( void )
public string __toString ( void )
final private void __clone ( void )
}
2、自定义异常处理类实例
<?php
$lan='en';
class langCnException extends Exception{
    
    function __construct($msg,$code)
    {
        parent::__construct($msg,$code);
    
    }    
        
}
class langEnException extends Exception{

    function __construct($msg,$code)
    {
        parent::__construct($msg,$code);
    
    }    
        
}    
try
{
    if($lan=='cn')
    {
        throw new langCnException('青锋建站','66');
    }
    elseif($lan=='en')
    {
        throw new langEnException('qing feng jian zhan','88');
    }
}
catch (langCnException $cn)
{
    echo $cn->getCode().$cn->getMessage();
}
catch (langEnException $en)
{
    echo $en->getCode().$en->getMessage();
}
?>

将PHP常见的错误转化为异常

系统内部有一个错误异常类,他是exception类的子类,其构造函数如下:
Class ErrorException extends Exception{
Function __construct($errMsb,$errCode,$errServerity,$errFile,$errLine)
{
//5个形参,分别代表:错误信息,错误代号,错误严重程度,错误文件,错误等号;
}
}
具体做法:错误发生时,会调用“自定义错误处理函数”;
Set_error_handler(“MyErrorHandler”);
Function MyErrorHandler($errMsb,$errCode,$errServerity,$errFile,$errLine)
{
Throw new ErrorException($errMsb,$errCode,$errServerity,$errFile,$errLine);
}
  以上就是青锋建站给大家分享的PHP中异常处理的工作机制,以及如何创建PHP自定义异常处理类,如何将常见的错误转化为异常。青锋建站,提供专业的高品质网站制作服务,包括CMS建站开发,PHP原生开发,PHP框架建站。

转载请注明来源网址:青锋建站-http://www.sjzphp.com/webdis/exception_852.html

电话 15632335515 | 邮箱 943703539@qq.com | QQ 943703539 | 微信 qingfengjianzhan

Copyright © 2016-2026 青锋建站 版权所有