学习动态网页技术PHP中错误处理的一些方法

2018-12-12 22:38

学习动态网页技术PHP中错误处理的一些方法

已经玩php一段时间了,基本是from 0开始的,经常出现的问题也很多,慢慢的可以熟练的查询文档了,而且,经验也不是很多。

先look here。:

error_reporting(1048);//1,2,4,7,...,1048 ob_start(); session_start();

date_default_timezone_set('Asia/Shanghai');

php的递给调用会吃掉很多的内存。 一般的,不要太多的使用define。

在类的构造和属性器方面,5已经做了很多的工作,克服的bug就不说了,__系列的函数都有一些看点,也是支持static的。

按照我现在的写过的程序,很少用到框架页面的,我感觉在php里面速度不在是一个问题。

注意类的调用次序,特别是已经extends的,准确的释放掉内存。 @mysql_fetch_array(result,MYSQL_ASSOC);

这个注意使用乱用,MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH是一个enum吧。默认的是MYSQL_BOTH.

mysql的语句,如果执行in 的话不再支持limit。so...很麻烦。

支持distinct,group之,程序循环执行,md。 if(get_magic_quotes_gpc()){ _GET= stripslashes_gpc(_GET); _POST= stripslashes_gpc(_POST); _COOKIE= stripslashes_gpc(_COOKIE); }

set_magic_quotes_runtime(0);#magic_quotes_runtime function stripslashes_gpc(array) { while (list(key,value) = each(array)) { if (is_string(value)) {

array[key] = addslashes(stripslashes(value)); } else if (is_array(value)) { array[key] = stripslashes_gpc(value);

} }

return array; } /**

* 处理程序中出现的错误 * @Date:2006-10-9-10:51 * @param (类型) (参数名) (描述) */

function Error_Handler(errno,errstr,errorfile,errline,errtext){ echo('系统发生错误:'.errstr);

echo('At'.errorfile.'的第'.errline.'行.'); if(errno==E_USER_ERROR){ echo('致命错误,程序已经中止'); } }

在使用的时候:

set_error_handler('Error_Handler');

trigger_error('call trigger_error',E_USER_ERROR);

这是使用函数获取的,当然您的错误报告级别应该高点:

error_reporting(1048);

为了更加oo,先看看一个描述类的自写的函数:

classname='Exception'; /**

* (功能描述) * @Date:

* @param (类型) (参数名) (描述) */

function ClassDetail(classname){ if(!class_exists(classname)){ echo(classname.'类不存在'); }else{

print_r(\以下描述类\print_r(\所有的方法

\

print_r(get_class_methods(classname)); print_r(\

print_r(\所有的属性

\print_r(get_class_vars(classname)); print_r(\} } 

ClassDetail(classname);

发现exception类的所有get方法是:

[0] => __construct [1] => getMessage [2] => getCode [3] => getFile [4] => getLine [5] => getTrace [6] => getTraceAsString [7] => __toString

慢慢的优化个性点,也可以的。

ok,来看比较oo的处理方式:

class ErrorHandlers extends Exception{ private _context = null;

function __construct(level, string, file, line, context=null){ parent::__construct(string,level); this->file = file; this->line = line; this->_level = level; this->_context = context; }

function __destruct(){ // parent::__destruct(); }

function Message(){

errors = array( E_ERROR => 'error', E_WARNING => 'warning', E_PARSE => 'parsing error', E_NOTICE => 'notice', E_CORE_ERROR => 'core error', E_CORE_WARNING => 'core warning', E_COMPILE_ERROR => 'compile error', E_COMPILE_WARNING => 'compile warning', E_USER_ERROR => 'user error', E_USER_WARNING => 'user warning', E_USER_NOTICE => 'user notice' );

str = errors[parent::getCode()].': '.parent::getMessage().' 在 '.parent::getFile(). ' 的第 '.parent::getLine().\行\\n\

if(this->_level==E_USER_ERROR){ str .= ('


致命错误'); }

echo('

'); echo(str); echo('
'); } }

function error_handler(errno,errstr,errorfile,errline,errtext){ throw new ErrorHandlers(errno,errstr,errorfile,errline,errtext); }

function exception_handler(Exception e) {

errors = array( E_ERROR => 'error', E_WARNING => 'warning', E_PARSE => 'parsing error', E_NOTICE => 'notice', E_CORE_ERROR => 'core error', E_CORE_WARNING => 'core warning', E_COMPILE_ERROR => 'compile error', E_COMPILE_WARNING => 'compile warning', E_USER_ERROR => 'user error', E_USER_WARNING => 'user warning',

E_USER_NOTICE => 'user notice');

echo errors[e->getCode()].': '.e->getMessage().' in '.e->getFile(). ' on line '.e->getLine().\echo e->getTraceAsString(); }

trigger_error('5do8'); try{ i = 1/0;

} catch(ErrorHandlers e) { echo \发生错误.\可以输出错误行 e->Message(); }

而后,注意了,如果您第一次(或者重新)加载的话,就加上:

set_error_handler('error_handler'); set_exception_handler('exception_handler');

如果不是上述情况,就不要加了,否则会出现

Exception thrown without a stack frame in Unknown on line 0

因为error_handler是anto_flush的。

在一个exception里面不能调用其他的exception。有2条普遍适用的规则,如下:

1:不要在一个Exception里面执行另一个Exception 2:不要在析构函数里面执行Exception.

restore_exception_handler();是可以保存exception柄的,注意,执行error以后就会有Exception的了。

最后,加上一个完整的例子:CallError.php


学习动态网页技术PHP中错误处理的一些方法.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:二年级上语文教学案例-夕阳真美-苏教版【小学学科网】

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: