PHP的异常处理

分类: PHP  • 发布时间: 2013-06-14 20:38:00  • 浏览量:8916


    PHP 5 添加了类似于其它语言的异常处理模块。在 PHP 代码中所产生的异常可被 throw 语句抛出并被 catch 语句捕获。需要进行异常处理的代码都必须放入 try 代码块内,以便捕获可能存在的异常。每一个 try 至少要有一个与之对应的 catch。使用多个 catch 可以捕获不同的类所产生的异常。当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch 的后面继续执行。当然,PHP 允许在 catch 代码块内再次抛出(throw)异常。【以上内容抄的php手册】


一个基本例子:


  try{
    //可能出现错误或异常的代码
    $a = 0;
    if($a < 2){
      throw new Exception("喂,你干啥呢,搞错了啊");
    }
    echo '我在try里';
  } catch(Exception $e){
    //catch 捕获 Exception是php已定义好的异常类
    //对异常处理,方法:1、自己处理 2、不处理,将其再次抛出
    echo $e->getMessage();
    echo '<br/>我在catch里';
  }
  echo '<hr/>';
  echo 100000;


通过这个例子我们能看出以下几个特点:

1.如果try内的代码没有问题 则把try内的代码执行完后直接执行catch后面的代码

2.如果try中代码有异常发生,则抛出一个异常对象,由catch中的参数接收,try中的代码不在执行,直接跳转去catch中的代码,catch执行完,继续向下执行



**自定义异常类**


自定义异常类的特点:

1.自定义异常类必须是Exception的子类

2.Exception 中只有构造方法和toString()方法可以重写

自定义异常类的目的:自定义异常类的目的是在该类中解决异常问题


再来个例子:


  //自定义异常类
  class MyException extends Exception
  {
    public function changeToOne(){
      return 1;
    }
    public function changeTpFive()
    {
      return 5;
    }
  }
 
  function compare($a)
  {
    if($a < 2){
      throw new MyException("小样,小了吧");
    }
  }
 
  try{
    $a = 0;
    compare($a);
  }catch (MyException $e){
    echo $e->getMessage();
    echo '<hr/>';
    $a = $e->changeToOne();
    try{
      compare($a);
    }catch (MyException $ee){
      echo $ee->getMessage();
      $a = $e->changeTpFive();
    }
  }
 
  echo '<hr/>';
  echo $a;


文章标签: php, 异常处理, 异常
用户评论:
  • 游客23465 2015-08-06 01:05:47

    PHP异常处理,就是个渣渣啊