大家对PHP的异常是什么态度
网上一些文章,都是介绍语法,没有分享如何真正用好PHP的异常的.
感觉PHP的异常机制不如C++/Java等的好用.
回复内容:
如题,大家是否会使用PHP的异常,如何使用
网上一些文章,都是介绍语法,没有分享如何真正用好PHP的异常的.
感觉PHP的异常机制不如C++/Java等的好用.
由于历史原因PHP很多内置函数都是没有异常,而是通过返回false/-1之类的来表达异常,导致开发者也习惯于采用返回值而非异常来区分(而且php函数的返回值和数组都是那么灵活)
说完不采用异常的理由(虽然没有说全),再来说说为什么异常还是值得使用的。首先需要说明的是,仅考虑语法方面,最新版本的PHP的异常,已经和JAVA等没有区别了。
1. 更丰富的错误信息。使用false/-1之类的返回值,只能让我们知道发生了异常,但不能知道发生了什么异常。即使通过给不同的异常返回不同的状态码,依然不如异常类直观。我们可以通过异常本身的类名来判断是什么异常,通过异常类的message来保存更详细的解释说明,最重要的是,我们可以通过异常的错误栈来判断是哪个文件第几行什么函数发生了问题,谁去调用的它。
2. 保证调用者处理异常。如果你的函数返回的是普通的值,可能出于疏忽,也有可能出于版本兼容问题(调用者根据你的老版本的函数进行开发,而你在新版本的函数里有了新的错误状态码)等情况,调用者忽略了你所返回的错误,那可能造成整个程序存在一些难以发现源头的问题。而异常则保证了调用者必须去处理。
3. 使你的代码逻辑更清晰。设想如果没有finally,针对每次返回都检测异常,并且在每个异常后写一遍释放资源是多么蛋疼的事情。
我自己写的框架是通过捕捉异常来显示错误页面的,其他地方我倒是基本不用异常。
try { require_once($some_file_path); } catch(exception $e) { $smarty->assign("error", $e->getMessage()); $smarty->display("error.tpl"); }
推荐阅读
-
PHP实在让人头痛,看不懂啊,被老大叼得不行了,大家帮我看段团购网的代码是什么
-
extjs+php ,大家来看看是小弟我的json输出的有关问题,还是小弟我的extjs没有写对呢
-
extjs+php ,大家来看看是小弟我的json输出的有关问题,还是小弟我的extjs没有写对呢
-
大家开发php常用的ide是什么?求推荐!
-
大家伙儿说说PHP对seo的影响
-
php-PHP调用.NET写的web service时异常,这一般是什么问题。异常错误信息如下
-
刘邦对儒生是什么态度?刘邦的态度是怎么转变的?
-
真实的历史上,曹操对司马懿是什么态度呢?
-
曹操奸雄之名是怎么来的?曹操对“奸雄”一词是什么态度?
-
唐太宗在位期间,对唐朝内外的军事情况是什么态度?