PHP异常(try catch)

PHP异常(try catch)_第1张图片

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 = "

出现异常,如下:

"; $message .= "

" . __CLASS__ . "[{$this->code}:{$this->message}]

"; 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基础)