zoukankan      html  css  js  c++  java
  • 2019.3.23 捕获异常

    PHP中try{}catch{}语句概述

    1.PHP5添加了类似于其它语言的异常处理模块。在 PHP 代码中所产生的异常可被 throw语句抛出并被 catch 语句捕获。(注:一定要先抛才能获取)

    2.需要进行异常处理的代码都必须放入 try 代码块内,以便捕获可能存在的异常。

    3.每一个 try 至少要有一个与之对应的 catch。

    4.使用多个 catch可以捕获不同的类所产生的异常。

    5.当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch 的后面继续执行。

    6.当然,PHP允许在 catch 代码块内再次抛出(throw)异常。

    7.当一个异常被抛出时,其后(译者注:指抛出异常时所在的代码块)的代码将不会继续执行,而 PHP 就会尝试查找第一个能与之匹配的 catch。

    8.如果一个异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,那么 PHP 将会产生一个严重的错误,并且输出 Uncaught Exception ... (未捕获异常)的提示信息。

    手动抛出和捕获异常

    // 使用think自带异常类抛出异常

    throw new hinkException('异常消息', 10006);

    助手函数简化异常的代码

    // 使用助手函数抛出异常

    exception('异常消息', 10006);

    如果需要抛出自定义异常,可以使用:

    // 抛出自定义异常

    exception('异常消息', 10006,'appcommonexceptionNotFoundException');

    手动捕获异常方式是使用try-catch,例如:

    try {
        // 这里是主体代码
    } catch (ValidateException $e) {
        // 这是进行验证异常捕获
        return json($e->getError());
    } catch (Exception $e) {
        // 这是进行异常捕获
        return json($e->getMessage());
    }
    可以使用PHP的异常捕获进行必要的处理,但需要注意一点,
    在异常捕获中不要使用thinkController类的error、success和redirect方法,

    因为上述三个方法会抛出HttpResponseException异常,从而影响正常的异常捕获,例如:
    try{
        Db::name('user')->find();
        $this->success('执行成功!');
    }catch(Exception $e){
        $this->error('执行错误');
    }
    应该改成
    try{
        Db::name('user')->find();
    }catch(Exception $e){
        $this->error('执行错误');
    }
    $this->success('执行成功!');

     



     
     
  • 相关阅读:
    PB调用.NET类库详解
    一个游标的性能问题
    WCF实例与并发的一些测试
    PB调用.NET代码的两个入口函数
    SQL数据库表防JS木马注入
    Atitit 收入理论大总结 4位一体 4象限理论 财政收入理论 6位一体
    Atitit 融资 之道 圈钱之道 attilax总结
    Atitit 组织架构的如何划分 划分方法attilax大总结
    Atitit 每个人都应该实施的互联网金融战略 attilax总结
    Atitit 研发组织与个人如何gdp计算法 attilax总结
  • 原文地址:https://www.cnblogs.com/liuwei1/p/10585230.html
Copyright © 2011-2022 走看看