php异常处理

使用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 "原始异常类"; 
  }
?>

 

posted @ 2016-05-18 17:11  plux  阅读(341)  评论(0编辑  收藏  举报