关于PHP5下throw Exception 和 return false 的问题

baofeng0113 2008-03-04 11:34:52
想请教各位高手,PHP5下到底是throw Exception 比较好还是 return false 比较好

我想写一套类似于CMS的东西,但是功能应该没有CMS那么强大,只是用于普通建站,改改就能用的那种.在实际开发过程中碰到点疑惑,关于throw Exception 和 return false 的使用

我数据库连接是用的PDO,但是写了一个数据库类去extends PDO.在这个类里增加了缓存的功能.对数据库的操作我想用异常比较好,但是缓存部分对文件操作时发生错误,是应该以异常的方式抛出还是应该return false.

还有比如验证码的实现,我现在的办法是在构造函数里去检测服务器是否支持GD库,不支持就抛出异常,在类的外部去捕获.但是使用return false会不会更好?

而且在程序的配置文件里我学discuz写过一个是否显示错误信息的代码,用的是ini_set('display_errors', true),根据不同的用户角色来判断是否打印错误.我不清楚在定义了这样的功能后是否还应该在类似于fopen,fwrite等函数前使用@来抑制错误信息的显示,不使用@才符合'display_errors'的使用,而使用就不能让用户看到所有的错误并作出相应的修改.

补充一下,@并不阻碍异常的抛出,这个似乎又和'display_errors'的功能有冲突

我该怎么去处理这之间的关系,怎样使用他们.
...全文
720 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaolei1982 2008-08-27
  • 打赏
  • 举报
回复
这两个是两码事,关于系统错误用异常来捕捉,比如数据库无法连接等,以及你无法预计的,
关于用户输入等主观逻辑错误用false判断,
ten789 2008-03-29
  • 打赏
  • 举报
回复
在过程中遇到异常应该抛出违例

对象中遇到异常应该返回逻辑假 让过程去判断该如何处理

LZ遇到的问题 在数据库操作正常的时候缓存操作失败 这时候应该不影响最终结果 这时候不应该抛出异常 同时日志记录
在检测GD库是否安装的时候应该抛出异常 环境检测这类东西应该有专门的东东来进行 这时候就应该返回逻辑假

在使用FOPEN 这类会导致致命错误同时失败的可能性比较大的时候应该用try来处理 而不是@来抑制错误信息的输出
lxtrayn 2008-03-06
  • 打赏
  • 举报
回复
个人人为:
异常处理机制可以处理多种类型的错误,开发大型项目的时候可以使用,程序可读性高
return false跳出本函数,编写功能比较单一的函数时使用。

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧