php错误处理,怎么做才好 我现在写代码做错误处理的时候,都是用的 if else 并用echo输出错误但是 这样做的话 就用点不妥,很不严谨,比如说java的try catch做的异常处理就显得非常严谨,虽然php中也可以用try catch来做,但是看开源的东西 ,都几乎不用想问下高手 , php 用if else做错误处理 规范吗?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个 除了在类设计的时候考虑这个 基本上没有做过专门设计。因为php自身在错误的处理上已经比较完善了。如果设计上存在错误的话那是经验问题。而且变量是弱类型很多 原本可能发生的错误都给消化掉了 嘿嘿 我个人感觉,在平时编写和数据库操作相关的代码时,用try catch比if else要好一些。 嗯, 这个...开始口水...首先,php的新模块基本都支持try_catch....这个是官方态度.-------------------------------------------------------好,然后说个人感受, 这个catch...throw还是很有需要的....不过很多同学切身感受不够,一般来说属于遇上的领导/客户比较温柔.....下面详细说说....就说这个致命错误吧,出现了就必须停止的,比如, 你有个函数, getWhatWhatConfig() 读一个配置文件ttt, 必须读到, 否则下面没法干...所以, 你 $config = file_get_contents('/path/to/config/file/ttt');if($config===FALSE){ die('文件木有,没法混了....');}....很好, 可是...TM的系统管理员总喜欢把一些临时文件也放在一个叫ttt文件里,然后过几天就删,删的时候记不得在哪,他就find foo -name ttt -exec rm -rf {} \; 每次都把这个配置文件给删了...老毛病说了还改不掉....所以网站就三天两头"没法混了...",领导同志一生气...怎么回事...就算出问题也要显示得漂亮点吗...怎么一行字就完了,得加上头脚...加图片.加颜色,加回去的链接....然后你就改.die=> echo ...........N 行html.... 函数变得老大....然后头疼的是, 美工每个月要换换图片....然后你就改成直接调用外面的layout,但是....layout上有动态内容啊,你得pass N个参数进这个getWhatWhatConfig函数 ....然后....领导又发话了, 怎么在不同模块里都是一个样子啊,我们需要在"妇女"模块里,这个错误显示成粉红色的...在"猛男"模块显示成黑白色的...然后要如果用户是老人显示成简洁风格....小孩显示成幼稚风格....然后如果用户在北京显示成沙尘暴背景,在海南显示成沙滩美女背景...........然后.....你想,这个显示还是交回给上级调用程序处理比较好...所以改成...return -1 ....可是, 系统管理员来了,这个错误信息太简单,我们看见了不知道到底什么错,有时候是没文件,有时候是文件权限不可读,有时候是文件内容给修改错了...能不能显示详细点.... 于是,改成 switch...return -1...return -2... return -3 ....可是,TNN的,过了几天文件格式修改了, -1,-2...变成可以返回的正确返回值之一....于是,再改成...return 'ERROR-1'...return 'ERROR-2',.....TNN的,格式又改了....任何字串都有可能....ERROR-1没准就是正确的值....想了想...各种预定义类型都不行,只好自己定义一个类了....于是你又改.....return new MyError(1,'没法混了')....return new MyError(2,'混不动了')......................恭喜你.....你终于创建出了php已经存在的exception处理方式.....-------------------------------------------有些有经验的同学会说还可以用trigger_error 和 set_error_handler,没错,那样也可以将错误集中处理,但是对需要环境变量的情况,就是上面说的各种用户/模块..区别处理的情况一样是很麻烦的尤其是,这个函数如果是公共底层函数,调用它的上层代码有可能连框架/应用都不是一样的....想想有些用的是smarty,有些用了Zend..有些是在wordpress里...----------------------------------------------关于楼主说的:"开源的东西 ,都几乎不用".....我个人意见是: 因为php的开源世界还不够完美....:)实际上一些新的开源项目,尤其是php5为基础的,很多还是用exception的,比如Zend 一个PHP的问题。。。 请教几个关于gzip的问题 php 执行bat失败 看看这条SQL语句怎么写! 为什么 $_SESSION['username']的值为空啊? 请教:WIN-XP系统下:进数据库phpmyadmin时如何使用用户名和密码验证? 在php中如何改变jpg图像文件的尺寸大小? ★★网站建设全纪录★★ 这个变量是怎么来的 PHP中,在后台已经把语言改为英语的了,但前端还有“首页”两个字,怎么也改不成英语。。。 字符串处理问题 为何用mysqli类时foreach只能取出一行,而while循环取出多行数据?
首先,php的新模块基本都支持try_catch....这个是官方态度.-------------------------------------------------------好,然后说个人感受, 这个catch...throw还是很有需要的....不过很多同学切身感受不够,一般来说属于遇上的领导/客户比较温柔.....
下面详细说说....就说这个致命错误吧,出现了就必须停止的,比如, 你有个函数, getWhatWhatConfig() 读一个配置文件ttt, 必须读到, 否则下面没法干...
所以, 你
$config = file_get_contents('/path/to/config/file/ttt');
if($config===FALSE){
die('文件木有,没法混了....');
}
....
很好, 可是...TM的系统管理员总喜欢把一些临时文件也放在一个叫ttt文件里,然后过几天就删,删的时候记不得在哪,他就find foo -name ttt -exec rm -rf {} \;
每次都把这个配置文件给删了...老毛病说了还改不掉....所以网站就三天两头"没法混了...",领导同志一生气...怎么回事...就算出问题也要显示得漂亮点吗...怎么一行字就完了,得加上头脚...加图片.加颜色,加回去的链接....然后你就改.
die=> echo ...........N 行html.... 函数变得老大....然后头疼的是, 美工每个月要换换图片....
然后你就改成直接调用外面的layout,
但是....layout上有动态内容啊,你得pass N个参数进这个getWhatWhatConfig函数 ....
然后....领导又发话了, 怎么在不同模块里都是一个样子啊,
我们需要在"妇女"模块里,这个错误显示成粉红色的...在"猛男"模块显示成黑白色的...
然后要如果用户是老人显示成简洁风格....小孩显示成幼稚风格....
然后如果用户在北京显示成沙尘暴背景,在海南显示成沙滩美女背景......
.....
然后.....你想,这个显示还是交回给上级调用程序处理比较好...
所以改成...return -1
....可是, 系统管理员来了,这个错误信息太简单,我们看见了不知道到底什么错,有时候是没文件,有时候是文件权限不可读,有时候是文件内容给修改错了...能不能显示详细点....
于是,改成 switch...return -1...return -2... return -3 ....
可是,TNN的,过了几天文件格式修改了, -1,-2...变成可以返回的正确返回值之一....
于是,再改成...return 'ERROR-1'...return 'ERROR-2',.....
TNN的,格式又改了....任何字串都有可能....ERROR-1没准就是正确的值....
想了想...各种预定义类型都不行,只好自己定义一个类了....
于是你又改.....return new MyError(1,'没法混了')....return new MyError(2,'混不动了')....
.........
.........
恭喜你.....你终于创建出了php已经存在的exception处理方式.....-------------------------------------------有些有经验的同学会说还可以用trigger_error 和 set_error_handler,
没错,那样也可以将错误集中处理,
但是对需要环境变量的情况,就是上面说的各种用户/模块..区别处理的情况
一样是很麻烦的
尤其是,这个函数如果是公共底层函数,
调用它的上层代码有可能连框架/应用都不是一样的....想想有些用的是smarty,有些用了Zend..有些是在wordpress里...----------------------------------------------关于楼主说的:"开源的东西 ,都几乎不用".....我个人意见是: 因为php的开源世界还不够完美....:)实际上一些新的开源项目,尤其是php5为基础的,很多还是用exception的,比如Zend