PHP异常记一笔

/**
    PHP异常处理
    javaVSphp 之异常(简单记一笔)
  
    java   函数外:抛的throws
              函数内:抛的throw
    
    php只有 函数内:抛的throw;
    
    什么时候try{}cath(){} //什么时候捕获
    1.就是你能处理的你就捕获
    2.不能处理的就只有抛了

   比喻:打个比喻不是很形象哈
     
     比如你开发一个图片处理模块
     你的图片处理库只有2个
              1.jpg图片处理库
              2.png图片处理库
        
    //写下面这段代码的时候你就会想,我这里只有个2个图片处理库,没有第3个了,
    如果用户给我传一个 GIF的图片
    怎么办呢? 
    我这程序是处理不了的,
    这就叫我不能处理的问题了,那就直接抛出就行了

      switch (检查图片类型..){
      
                    case  ' jpg' :
                       调用我的 jpg图片处理库

                    case  'png':
                       调用我的png图片处理库
                     
                     default :
                        你这里就可以直接抛出了
                      throw new    Exception ('-_-我只能对jp/pn进行处理');
            
                      
      } 

function compile($filename) {
    $content        = file_get_contents($filename);
    // 替换预编译指令
    $content        = preg_replace('/\/\/\[RUNTIME\](.*?)\/\/\[\/RUNTIME\]/s', '', $content);
    $content        = substr(trim($content), 5);
    if ('?>' == substr($content, -2))
        $content    = substr($content, 0, -2);
    return $content;
}

 ****/


class  NumberIndexException   extends  Exception {

             Public  function   __Construct($msg) {
                 parent :: __Construct($msg);               
             }

             Public  function  __toString(){
             
                 return $this->message .'--'.$this->code.'--'.$this->file.'--'.$this->line;
             }
}

class   Demo {
 
     Public static function  method(array  $arr, $index) {
                  
             if ($index<0)
                 throw new NumberIndexException ("-_-不能处理了负数下标的出现了...");           
             return   $arr[$index];
     }

}


class  ExceptionsDemo {
 
          /**自定义主函数*/
         Public   Static  function  Main(){
                 $arr = array (1,2,3);                   
                  try{
                   
                       $sum = Demo::method($arr,-30);
                        echo  'sum='.$sum; //输出
                  
                   } catch(NumberIndexException   $e) {
                                      
                           echo '异常...';
                           echo  '<pre>';
                           echo  'message:'.$e->getMessage();  //取得信息
                           echo  $e->getCode();
                           echo  $e->getFile();  
                           echo  $e->getLine(); 
                           echo '<hr/>';

                           echo  $e->getTrace();  
                           echo  $e->getTraceAsString();//打印出在堆栈中的信息
                           echo '<hr/>';
                           echo  $e->__toString(); //把对象转换为字符串
                           echo  '</pre>';
                   }
         }

}

header("Content-Type:text/html;charset=utf-8;");
ExceptionsDemo :: Main();  //入口


转载于:https://my.oschina.net/u/1246814/blog/265043

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值