时间:2021-07-01 10:21:17 帮助过:17人阅读
- <?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出现异常该怎么办的详细内容,更多请关注gxlcms其它相关文章!