zoukankan      html  css  js  c++  java
  • php try{} catch{}异常处理

    1.使用方法:可能出错的代码放在try里面->抛出异常->捕捉异常并处理

       Exception()是系统内置的类,可以直接使用

    <?php
    try{
      $a=false;  //会出错的代码
      if($a==false){
          throw new Exception("出错了..."); //将提示信息放进去
      }
    } catch(Exception $e) {     //此处表示调用Exception的异常处理类,也可以自定义异常处理类
        echo $e->getMessage();  //获取提示信息
    } 

    注意:异常只有被抛出了,才会被捕捉,如果没有被抛出,则直接会报错,例如:

    <?php 
    try{
      require "test.php";   //此处会直接报错
    } catch(Exception $e) {
        echo $e->getMessage();
    }
    

    只有将异常抛出才会被捕捉

    <?php 
    try{
      $file="test.php";
      if(file_exists($file)){
          require "test.php";   
      } else {
          throw new Exception("文件:".$file."不存在!");
      }
    } catch(Exception $e) {
        echo $e->getMessage();
    }
    

    2.自己编写异常处理类,并继承Exception

    <?php 
     //自定义的异常处理类 继承异常基类
     class Myexception extends Exception {
         public $_errorMessage="";
         public function __construct($str){
             $this->_errorMessage=$str;
         }
         //自定义的异常处理方法
         public function getStr(){
             return  $this->_errorMessage;
         }
     }
     try{
         $age="100";
         if($age > 60){
             throw new Myexception("年龄大于60");       //向Myexception抛出异常
         }
     } catch(Myexception $e) {                                //被捕捉
         echo $e->getStr();
     }
     
    

      运行结果如下

    3.异常的嵌套和向上层传递

    嵌套

    <?php 
     //自定义的异常处理类 继承异常基类
     class Myexception extends Exception {
         public $_errorMessage="";
         public function __construct($str){
             $this->_errorMessage=$str;
         }
         //自定义的异常处理方法
         public function getStr(){
             return  $this->_errorMessage;
         }
     }
     try{
         $age="59";
         if($age > 60){
             throw new Myexception("年龄大于60");       //向Myexception抛出异常
         } else {
             throw new Exception("年龄小于60");         //向Exception抛出异常
         }
     } catch(Myexception $e) {
         echo $e->getStr();
     } catch(Exception $e) {                            //被捕捉
         echo $e->getMessage();
     }
    

      运行结果如下

    异常向上层传递,代码如下

    <?php 
     //自定义的异常处理类 继承异常基类
     class Myexception extends Exception {
         public $_errorMessage="";
         public function __construct($str){
             $this->_errorMessage=$str;
         }
         //自定义的异常处理方法
         public function getStr(){
             return  $this->_errorMessage;
         }
     }
    try{
        $age="100";
        try{
            if($age>60){
                throw new Exception("年龄大于60");       //向Exception抛出异常
            }
        } catch(Exception $a){                           //被Exception捕捉
            throw new Myexception($a->getMessage());     //向Myexception抛出异常
        }
    } catch (Myexception $e){                            //被Myexception捕捉
        echo $e->getStr();
    }
    

      运行结果如下

  • 相关阅读:
    sqlalchemy
    nginx配置文件,做多个项目代理
    pyspider
    Mysql原理+ 多实例 +表损坏
    Spring 学习-AOP
    java 基础 --- 动态代理和静态代理
    Spring 学习-IoC
    [转]字符编码笔记:ASCII,Unicode 和 UTF-8
    JVM(五) class类文件的结构
    数据结构(四)--- 红黑树(RedBlock-Tree)
  • 原文地址:https://www.cnblogs.com/flyyu/p/14103819.html
Copyright © 2011-2022 走看看