PHP 错误与异常 笔记与总结(18 )页面重定向实现

在发生错误时,将用户重定向到另一个页面。

 1 <?php
 2 header(‘content-type:text/html; charset=utf-8‘);
 3
 4 class ExceptionRedirectHandler{
 5
 6     protected $_exception;
 7     protected $redirect = ‘404.html‘;
 8     protected $_logFile = ‘D:/practise/php/Error/LogException3.log‘;
 9
10     //构造函数中得到异常对象
11     public function __construct(Exception $e){
12         $this->_exception = $e;
13     }
14
15     public static function handle(Exception $e){
16         $self = new self($e);
17         $self->log();
18         //清除所有的输出缓冲
19         while(@ob_end_clean());
20         header(‘HTTP/1.1 307 Temporary Rediret‘);
21         header(‘Cache-Control:no-cache, must-revalidate‘);
22         header(‘Expires: Sun, 05 Jul 2015 22:36:42 GMT‘);
23         header(‘Location:‘.$self->redirect);
24         exit(1);
25     }
26
27     public function log(){
28         error_log($this->_exception->getMessage().PHP_EOL, 3, $this->_logFile);
29     }
30 }
31
32 set_exception_handler(array(‘ExceptionRedirectHandler‘, ‘handle‘));
33
34 //测试
35 $conn = mysql_connect(‘localhost‘, ‘root‘, ‘root123‘);
36 if(!$conn){
37     throw new Exception("数据库连接失败");
38
39 }

跳转到 404 页面:

时间: 2024-10-03 13:15:12

PHP 错误与异常 笔记与总结(18 )页面重定向实现的相关文章

PHP 错误与异常 笔记与总结(10)错误处理器测试

关联文件:myErrorHandler.php (上一篇) 先测试通知级别的错误的自定义处理: testErrorHandler.php <?php require_once 'myErrorHandler.php'; error_reporting(-1); set_error_handler(array('myErrorHandler', 'deal')); //通知级别错误 echo $notice; 运行,在 D:\practise\php\From\notice 生成 noticeLo

PHP 错误与异常 笔记与总结(17 )像处理异常一样处理 PHP 错误

有两种方式可以在 PHP 中以异常的方式处理错误: ① PHP 内置的 ErrorException类(也是 Exception 类的子类) 1 <?php 2 function exception_error_handler($errno, $errstr, $errfile, $errline){ 3 throw new ErrorException($errstr, 0, $errno, $errfile, $errline); 4 } 5 6 set_error_handler('exc

PHP 错误与异常 笔记与总结(14 )记录和发送异常信息

当发生异常时,把异常信息记录到日志文件中: 1 <?php 2 header('content-type:text/html; charset=utf-8'); 3 class LogException extends Exception{ 4 public function __construct($message = null, $code = 0){ 5 parent::__construct($message, $code); 6 error_log($this->getMessage

PHP 错误与异常 笔记与总结(11 )register_shutdown_function() 函数的使用

通过 register_shutdown_function 方法,可以让我们设置一个当执行关闭时可以被调用的另一个函数. 也就是说,当我们的脚本执行完成或者意外死掉导致 php 执行即将关闭时,我们的这个函数会被调用. [使用场景] ① 页面被(用户)强制停止 ② 程序代码意外终止或超时 ③ php4 中没有析构函数,可以使用该函数模拟析构函数 shutdown.php <?php header("content-type:text/html;charset=utf-8"); c

PHP 错误与异常 笔记与总结(8)自定义错误处理函数 set_error_handler()

通过 Set_error_handler() 函数设置用户自定义的错误处理函数. 步骤: ① 创建错误处理函数 ② 设置不同级别调用函数 ③ Set_error_handler() 函数制定接管错误处理—— 如果使用了该函数,程序会绕过标准的 PHP 错误处理. 摘自:php.net mixed set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] ) 设置一个用户的函数(erro

PHP 错误与异常 笔记与总结(16 )自定义异常处理器

可以使用自定义异常处理器来处理所有未捕获的异常(没有用 try/catch 捕获的异常). set_exception_handler():设置一个用户定义的异常处理函数,当一个未捕获的异常发生时所调用函数的名称(回调函数),该函数必须在调用 set_exception_handler() 之前已经定义.该处理函数需要接受一个参数,该参数是一个抛出的异常对象 [例] 1 <?php 2 header('content-type:text/html; charset=utf-8'); 3 head

PHP 错误与异常 笔记与总结(13 )自定义异常类

针对不同的异常,进行不同的处理,可以通过自定义异常类记录特定的异常信息来处理不同类型的异常.自定义异常类通过继承基类(Exception),对基类进行扩展. 自定义异常类 1 <?php 2 header('content-type:text/html; charset=utf-8'); 3 /* 4 自定义异常类 5 */ 6 class MyException extends Exception{ 7 //重写父类构造函数 8 public function __contruct($mess

PHP 错误与异常 笔记与总结(15 )使用观察者模式处理异常信息

使异常处理变得更灵活.可观察,可以使用设计模式中的观察者模式. 文件 ① 定义观察者的接口 ExceptionObserver.php: 1 <?php 2 /* 3 给观察者定义的规范 4 */ 5 interface ExceptionObserver{ 6 public function update(Observer_Exception $e); 7 } 文件 ② 观察者模式的自定义异常类 Observer_Exception Observer_Exception.php: 1 <?p

PHP 错误与异常 笔记与总结(3)PHP 配置文件(php.ini)中与错误相关的选项 与 设置错误级别

[PHP 配置文件中与错误相关的选项 ] 选项 描述 error_reporting 设置错误报告的级别 display_errors 是否显示错误 log_errors 设置是否将错误信息记录到日志或者 error_log 中 error_log 设置脚本错误将记录到的文件 log_errors_max_len 设置 log_errors 的最大字节数 ignore_repeated_errors 是否忽略重复的错误信息 ignore_repeated_source 是否忽略重复错误消息的来源