PHP204是什么错,PHP错误与异常处理(四)

set_execption_handler

set_exception_handler ( callable $exception_handler )

设置默认的异常处理程序,用于没有用 try/catch 块来捕获的异常。 在exception_handler 调用后异常会中止。

代码如下:

header('content-type:text/html;charset=utf-8');

class ExceptionRedirectHandler{

protected $_exception;

public $redirect = '404/index.html';//自己网上下载的404页面路径

public $file = 'E:\php39\impover\redirect.log';//保存的日志的位置

private $_msg='';

public function __construct(Exception $e){

$this->_exception = $e;

}

public static function handle(Exception $e){

$self = new self($e);

$self->log();

while(@ob_end_clean());//清除缓存

header('HTTP/1.1 307 Temporary Redirect');//307重定向

header('Cache-Control:no-cache,must-revalidate');//不缓存

header('refresh:1;url='.$self->redirect);

exit();

}

public function log(){

//写入日志

$this->_msg =<<

异常信息为:{$this->_exception->getMessage()}

异常文件为:{$this->_exception->getFile()}

异常行号为:{$this->_exception->getLine()}

EOF;

error_log($this->_msg,3,$this->file);

}

}

set_exception_handler(array('ExceptionRedirectHandler','handle'));

$link = new pdo('mysql:host=localhost;dbname=t_test','root','cuowu');

if (!$link) {

throw new Exception('数据库连接失败,请查询原因');

}

?>

得到的结果是数据库连接错误,跳转到了如下页面:

98fbfd4007c3

image.png

附: PHP中Header使用的HTTP协议(如需常用,可以把它封装成一个函数,放数组中)以及常用的header头设置:

100 => "HTTP/1.1 100 Continue",

101 => "HTTP/1.1 101 Switching Protocols",

200 => "HTTP/1.1 200 OK", ///200 正常状态

201 => "HTTP/1.1 201 Created",

202 => "HTTP/1.1 202 Accepted",

203 => "HTTP/1.1 203 Non-Authoritative Information",

204 => "HTTP/1.1 204 No Content",

205 => "HTTP/1.1 205 Reset Content",

206 => "HTTP/1.1 206 Partial Content",

300 => "HTTP/1.1 300 Multiple Choices",

301 => "HTTP/1.1 301 Moved Permanently",

302 => "HTTP/1.1 302 Found",

303 => "HTTP/1.1 303 See Other",

304 => "HTTP/1.1 304 Not Modified",

305 => "HTTP/1.1 305 Use Proxy",

307 => "HTTP/1.1 307 Temporary Redirect",

400 => "HTTP/1.1 400 Bad Request",

401 => "HTTP/1.1 401 Unauthorized",

402 => "HTTP/1.1 402 Payment Required",

403 => "HTTP/1.1 403 Forbidden",

404 => "HTTP/1.1 404 Not Found",

405 => "HTTP/1.1 405 Method Not Allowed",

406 => "HTTP/1.1 406 Not Acceptable",

407 => "HTTP/1.1 407 Proxy Authentication Required",

408 => "HTTP/1.1 408 Request Time-out",

409 => "HTTP/1.1 409 Conflict",

410 => "HTTP/1.1 410 Gone",

411 => "HTTP/1.1 411 Length Required",

412 => "HTTP/1.1 412 Precondition Failed",

413 => "HTTP/1.1 413 Request Entity Too Large",

414 => "HTTP/1.1 414 Request-URI Too Large",

415 => "HTTP/1.1 415 Unsupported Media Type",

416 => "HTTP/1.1 416 Requested range not satisfiable",

417 => "HTTP/1.1 417 Expectation Failed",

500 => "HTTP/1.1 500 Internal Server Error",

501 => "HTTP/1.1 501 Not Implemented",

502 => "HTTP/1.1 502 Bad Gateway",

503 => "HTTP/1.1 503 Service Unavailable",

504 => "HTTP/1.1 504 Gateway Time-out"

header('Content-language: en'); //设置上下文语言

// 设置页面最后修改时间(多用于防缓存)

$time = time() - 60; //建议使用filetime函数来设置页面缓存时间

header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT');

// 设置头文件类型,可以用于流文件或者文件下载 header('Content-Type: application/octet-stream');

header('Content-Disposition: attachment; filename="example.zip"');

header('Content-Transfer-Encoding: binary');

readfile('example.zip');//读取文件到客户端

//禁用页面缓存 header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');

header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');

header('Pragma: no-cache');

//设置页面头信息 header('Content-Type: text/html; charset=iso-8859-1');

header('Content-Type: text/html; charset=utf-8');

header('Content-Type: text/plain');

header('Content-Type: image/jpeg');

header('Content-Type: application/zip');

header('Content-Type: application/pdf');

header('Content-Type: audio/mpeg');

header('Content-Type: application/x-shockwave-flash');

//....至于Content-Type 的值 可以去查查 w3c 的文档库,那里很丰富

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值