php异常捕获tp3案例演示

PHP / 220人浏览 / 0人评论

Exception::__construct — 异常构造函数,getMessage — 获取异常消息内容,getPrevious — 返回前一个 Throwable,getCode — 获取异常代码,getFile — 创建异常时的程序文件名称,getLine — 获取创建的异常所在文件中的行号,getTrace — 获取异常追踪信息,getTraceAsString — 获取字符串类型的异常追踪信息,__toString — 将异常对象转换为字符串,__clone — 异常克隆

php异常处理

演示框架,tp3中异常捕获。

其他项目中使用类似。

php异常类相关方法

Exception::__construct — 异常构造函数
Exception::getMessage — 获取异常消息内容
Exception::getPrevious — 返回前一个 Throwable
Exception::getCode — 获取异常代码
Exception::getFile — 创建异常时的程序文件名称
Exception::getLine — 获取创建的异常所在文件中的行号
Exception::getTrace — 获取异常追踪信息
Exception::getTraceAsString — 获取字符串类型的异常追踪信息
Exception::__toString — 将异常对象转换为字符串
Exception::__clone — 异常克隆
message 异常消息内容
code 异常代码
file 抛出异常的文件名
line 抛出异常在该文件中的行号

下方案例中,Exception表示,使用php异常类,Exception表示Tp3框架异常类。

<?php
namespace Home\Controller;

use Think\Controller;
use Think\Exception;

class IndexController extends Controller
{
    public function index()
    {
        $this->show('<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微软雅黑"; color: #333;font-size:24px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px } a,a:hover{color:blue;}</style><div style="padding: 24px 48px;"> <h1>:)</h1><p>欢迎使用 <b>ThinkPHP</b>!</p><br/>版本 V{$Think.version}</div><script type="text/javascript" src="/Public/static/client.js"></script><thinkad id="ad_55e75dfae343f5a1"></thinkad><script type="text/javascript" src="/stats?sId=9347272" charset="UTF-8"></script>','utf-8');
    }

    public function demo_php_exception() {
        $flag = false;
        try{
            // TODO
            // 使用PHP自带的异常捕获类调试
            if (1) {
                //php自带的Exception是要加上斜杠的
                throw new \Exception("测试错误一");
            }            
            if (1) {
                //php自带的Exception是要加上斜杠的
                throw new \Exception("测试错误二");
            }
            $flag = true;
        } catch(\Exception $e) { //php自带的Exception是要加上斜杠的
            var_dump($e->getMessage());
            echo "<br>";
            var_dump($e->getCode());
            echo "<br>";
            var_dump($e->getPrevious());
            echo "<br>";
            var_dump($e->getLine());
            echo "<br>";
            var_dump($e->getTrace());
            echo "<br>";
            var_dump($e->getTraceAsString());
        }
        if($flag) {
            var_dump($_SERVER);
        }
        if(!$flag) {
            var_dump($flag);
        }
    }

    /**
     * 使用think的Exception类  
     *
     * @Author chambers
     * @email chambers@qq.com
     * @DateTime 2021-12-26 10:53:00
     * @version 1.0.0
     * @return void
     */
    public function demo_tp_three_exception() {
        $flag = false;
        try{
            // TODO
            // 使用PHP自带的异常捕获类调试
            if (1) {
                //php自带的Exception是要加上斜杠的
                throw new Exception("测试错误一");
            }            
            if (1) {
                //php自带的Exception是要加上斜杠的
                throw new Exception("测试错误二");
            }
            $flag = true;
        } catch(Exception $e) { //php自带的Exception是要加上斜杠的
            var_dump($e->getMessage());
            echo "<br>";
            var_dump($e->getCode());
            echo "<br>";
            var_dump($e->getPrevious());
            echo "<br>";
            var_dump($e->getLine());
            echo "<br>";
            var_dump($e->getTrace());
            echo "<br>";
            var_dump($e->getTraceAsString());
        }
        if($flag) {
            var_dump($_SERVER);
        }
        if(!$flag) {
            var_dump($flag);
        }
    }  
}

打印效果

string(15) "测试错误一"
int(0)
NULL
int(21)
array(7) { [0]=> array(4) { ["function"]=> string(18) "demo_php_exception" ["class"]=> string(31) "Home\Controller\IndexController" ["type"]=> string(2) "->" ["args"]=> array(0) { } } [1]=> array(6) { ["file"]=> string(68) "\ThinkPHP\Library\Think\App.class.php" ["line"]=> int(178) ["function"]=> string(6) "invoke" ["class"]=> string(16) "ReflectionMethod" ["type"]=> string(2) "->" ["args"]=> array(1) { [0]=> object(Home\Controller\IndexController)#2 (2) { ["view":protected]=> object(Think\View)#3 (2) { ["tVar":protected]=> array(0) { } ["theme":protected]=> string(0) "" } ["config":protected]=> array(0) { } } } } [2]=> array(6) { ["file"]=> string(68) "\ThinkPHP\Library\Think\App.class.php" ["line"]=> int(113) ["function"]=> string(12) "invokeAction" ["class"]=> string(9) "Think\App" ["type"]=> string(2) "::" ["args"]=> array(2) { [0]=> object(Home\Controller\IndexController)#2 (2) { ["view":protected]=> object(Think\View)#3 (2) { ["tVar":protected]=> array(0) { } ["theme":protected]=> string(0) "" } ["config":protected]=> array(0) { } } [1]=> &string(18) "demo_php_exception" } } [3]=> array(6) { ["file"]=> string(68) "\ThinkPHP\Library\Think\App.class.php" ["line"]=> int(213) ["function"]=> string(4) "exec" ["class"]=> string(9) "Think\App" ["type"]=> string(2) "::" ["args"]=> array(0) { } } [4]=> array(6) { ["file"]=> string(70) "\ThinkPHP\Library\Think\Think.class.php" ["line"]=> int(136) ["function"]=> string(3) "run" ["class"]=> string(9) "Think\App" ["type"]=> string(2) "::" ["args"]=> array(0) { } } [5]=> array(6) { ["file"]=> string(53) "\ThinkPHP\ThinkPHP.php" ["line"]=> int(100) ["function"]=> string(5) "start" ["class"]=> string(11) "Think\Think" ["type"]=> string(2) "::" ["args"]=> array(0) { } } [6]=> array(4) { ["file"]=> string(41) "\index.php" ["line"]=> int(26) ["args"]=> array(1) { [0]=> string(53) "\ThinkPHP\ThinkPHP.php" } ["function"]=> string(7) "require" } }
string(754) "#0 [internal function]: Home\Controller\IndexController->demo_php_exception() #1 \ThinkPHP\Library\Think\App.class.php(178): ReflectionMethod->invoke(Object(Home\Controller\IndexController)) #2 \ThinkPHP\Library\Think\App.class.php(113): Think\App::invokeAction(Object(Home\Controller\IndexController), 'demo_php_except...') #3 \ThinkPHP\Library\Think\App.class.php(213): Think\App::exec() #4 \ThinkPHP\Library\Think\Think.class.php(136): Think\App::run() #5 \ThinkPHP\ThinkPHP.php(100): Think\Think::start() #6 \index.php(26): require('H:\\phpstudy_pro...') #7 {main}" bool(false)

转载注明:

0 条评论

还没有人发表评论

发表评论 取消回复

记住我的信息,方便下次评论
有人回复时邮件通知我