欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

php异常处理 - 蜀都小一

程序员文章站 2022-06-12 18:45:53
...
使用try{thow}catch(){}异常处理结构,可以有效的控制多行可能发生异常的代码,基本模型如下:
php
try
{
throw new Exception("错误信息";) //抛出一个错误
}     
catch(Exception $e)  //捕获错误信息,Exception是一个内置的错误处理类
{
echo $e->getMessage(); //输出错误信息
echo $e->getCode(); //返回异常代码
echo $e->getFile(); //返回发生异常的文件
echo $e->getLine(); //返回发生异常的行号
}

?>

Exception原形:

php
class Exception
{
    protected $message = 'Unknown exception';   // 异常信息
    private   $string;                          // __toString cache
    protected $code = 0;                        // 用户自定义异常代码
    protected $file;                            // 发生异常的文件名
    protected $line;                            // 发生异常的代码行号
    private   $trace;                           // backtrace
    private   $previous;                        // previous exception if nested exception

    public function __construct($message = null, $code = 0, Exception $previous = null);

    final private function __clone();           // Inhibits cloning of exceptions.

    final public  function getMessage();        // 返回异常信息
    final public  function getCode();           // 返回异常代码
    final public  function getFile();           // 返回发生异常的文件名
    final public  function getLine();           // 返回发生异常的代码行号
    final public  function getTrace();          // backtrace() 数组
    final public  function getPrevious();       // 之前的 exception
    final public  function getTraceAsString();  // 已格成化成字符串的 getTrace() 信息

    public function __toString();               // 可输出的字符串
}
?> 

同时,一个try也可以关联多个catch块,可以自定义类继承Exception类来实现

php
  class myException1 extends Exception{}  //根据需要自定义
  class myException2 extends Exception{}
  class myException3 extends Exception{}
  try{
    switch(1){
      case 1:throw new myException1();
      case 2:throw new myException2();
      case 3:throw new myException3(); //当找不到对应的catch代码块时,将会抛到Exception处理,因为myException3继承了Exception
    }
  }
  catch(myException1 $e){
    echo "自定义错误1";
  }
  catch(myException2 $e){
    echo "自定义错误2";
  }
  catch(Exception $e){
    echo "原始异常类"; 
  }
?>