• 技术文章 >后端开发 >PHP问题

    PHP出现异常该怎么办

    醉折花枝作酒筹醉折花枝作酒筹2021-05-17 17:40:47转载349
    本篇文章给大家介绍一下解决PHP出现异常的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

    在这里插入图片描述

    <?php
    /****************************************************
     * php处理异常
     * try中不主动throw,会先出现PHP的系统错误
     ****************************************************/
    header("content-type:test/html:charset=utf-8");
    error_reporting(-1);
    try {
        $num1 = 3;
        $num2 = 0;
        if ($num2 == 0) {
            throw new Exception("自定义错误");
        } else {
            $res = $num1 / $num2;
        }
    
    } catch (Exception $e) {
        echo $e->getMessage();
        // die(); // 终止异常
    }
    /******************************************************
     * php+mysql+pdo
     *****************************************************/
    try {
        $pdo = new PDO("mysql:host=localhost;dbname=mysql", "root", "");
    } catch (PDOException $e) {
        echo $e->getMessage();
        // die(); // 终止异常
    }
    /******************************************************
     * php+文件异常
     *****************************************************/
    
    /**
     * PHP 读取大文件 SplFileObject :
     * https://blog.csdn.net/ekliu/article/details/8855907
     */
    // SqlFileObject相对于传统的open($filename, 'r')产生的对象的优点在于不需要打开文件句柄  不需要关闭句柄更加的方便
    $handle = new SplFileObject("sid_list.txt");
    while (!$handle->eof()) {
        $item = $handle->fgets();
    }
    
    try {
        $pdo = new SplFileObject("text.txt", "r");
        echo "read File";
    } catch (Exception $e) {
        echo $e->getMessage();
        // die(); // 终止异常
    }
    /******************************************************
     * php异常 嵌套
     *****************************************************/
    try {
        throw new Exception("测试异常1");
    } catch (Exception $e) {
        echo $e->getMessage();
        // die(); // 终止异常
        try {
            throw new Exception("测试异常2");
        } catch (Exception $e) {
            echo $e->getMessage();
        }
    }
    
    /******************************************************
     * php异常 自定义异常封装
     *****************************************************/
    class MyException extends Exception
    {
        public function __construct($message = "", $code = 0, $previous = null)
        {
            parent::__construct($message, $code, $previous);
        }
    
        public function __toString()
        {
            $message = "<h2>出现异常,如下:</h2>";
            $message .= "<p>" . __CLASS__ . "[{$this->code}:{$this->message}]</p>";
            return $message;
        }
    
        /****************自定义异常方法***************/
        public function test()
        {
            echo "这是自定义错误";
        }
    
        public function stop()
        {
            exit("异常 end...");
        }
    }
    
    // 开始调用 MyException
    try {
        echo "出现异常啦";
        throw new MyException("测试自定义异常", 3);
    } catch (MyException $e) {
        echo $e->getMessage();
    }
    
    // 嵌套使用 MyException 与 Exception (没有顺序)
    try {
        throw new MyException("测试自定义异常");
    } catch (Exception $e) {
        echo $e->getMessage();
    } catch (MyException $e) {
        echo $e->getMessage();
    }
    
    /******************************************************
     * php异常 自定义异常封装    文件
     *****************************************************/
    class FileException extends Exception
    {
        public function getDetails()
        {
            switch ($this->code) {
                case 0:
                    return "没有提供文件";
                    break;
                case 1:
                    return "文件不存在";
                    break;
                case 2:
                    return "不是一个文件";
                    break;
                case 3:
                    return "文件不可写";
                    break;
                case 4:
                    return "非法文件的操作模式";
                    break;
            }
        }
    }
    
    class WriteData
    {
        private $_message = "";
        private $_fp = null;
    
        public function __construct($filename = null, $mode = "w")
        {
            $this->_message = "文件:{$filename} ; 模式:{$mode}";
            if (empty($filename)) throw new FileException($this->_message, 0);
            if (!file_exists($filename)) throw new FileException($this->_message, 1);
            if (!is_file($filename)) throw new FileException($this->_message, 2);
            // is_writable — 判断给定的文件名是否可写
            if (!is_writable($filename)) throw new FileException($this->_message, 3);
            if (!in_array($mode, array("w", "w+", "a", "a
            +"))) throw new FileException($this->_message, 4);
    
            $this->_fp = fopen($filename, $mode);
        }
    
        public function write($data)
        {
            if (@!fwrite($this->_fp, $data . PHP_EOL)) throw new FileException($this->_message, 5);
        }
    
        public function close()
        {
            if ($this->_fp) {
                if (!fclose($this->_fp)) throw new FileException($this->_message, 6);
                $this->_fp = null;
    
            }
        }
    
        public function __destruct()
        {
            $this->close();
        }
    }

    推荐学习:php视频教程

    以上就是PHP出现异常该怎么办的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除
    上一篇:zabbix php无法显示怎么办 下一篇:centOS安装PHP后,php-fpm启动失败怎么办
    大前端线上培训班

    相关文章推荐

    • Phpstorm中怎么限制加载文件• php怎么将字符串转为timestamp(时间戳)• godaddy怎么修改php版本• php怎么禁止重复登录• zabbix php无法显示怎么办

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网