What to do if an exception occurs in PHP

醉折花枝作酒筹
Release: 2023-03-09 17:56:01
forward
2345 people have browsed it

This article will introduce to you how to solve PHP exceptions. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to everyone.

What to do if an exception occurs in PHP

What to do if an exception occurs in 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, &#39;r&#39;)产生的对象的优点在于不需要打开文件句柄  不需要关闭句柄更加的方便
$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();
    }
}
Copy after login

Recommended learning:

php video tutorial

The above is the detailed content of What to do if an exception occurs in PHP. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:csdn.net
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template