<?php
/*
?* WEB开发笔记 www.chhua.com 每日练习 PHP面向对象编程——再写PHP异常处理
?*/

/*代码演示
?* */
class HelloWorld {//基类
??? public function getHtml($str=””){
??? ?if (empty($str)){
??? ??die(“getHtml方法没有传递参数”);//die函数中止的方法
??? ?}
??? }
???
??? public function getText($str=””){
??? ?if (empty($str)){
??? ??throw new Exception(“getText 方法没有传递参数!”);//抛出异常的方法
??? ?}
??? }
}

$hello=new HelloWorld();

try {
?$hello->getText();
}
catch (Exception $e){
?echo $e->getMessage();
}
?>

感觉PHP中的try{}catch{}结构像鸡肋

PHP 5 添加了类似于其它语言的异常处理模块。在 PHP 代码中所产生的异常可被 throw 语句抛出并被 catch 语句捕获。需要进行异常处理的代码都必须放入 try 代码块内,以便捕获可能存在的异常。每一个 try 至少要有一个与之对应的 catch。使用多个 catch 可以捕获不同的类所产生的异常。当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch 的后面继续执行。当然,PHP 允许在 catch 代码块内再次抛出(throw)异常。

这是PHP手册中对PHP异常处理的介绍,看起来似乎不错,我们可以像C系列语言一样使用try{}catch{}结构了。

但问题是,PHP压根就不会自己产生异常,至于是不是出了异常,仍然需要我们自己判断,如果有,需要我们自己用throw new Exception语句抛出一个异常,然后再用catch去捕获……

似乎有点没事找事的味道:本来没有麻烦,我们去自己去制造一个麻烦出来,然后再自己把麻烦解决掉。

且不说它没事找事,既然我们都知道异常了,为何却要抛一个异常出去然后再捕获?知道异常了直接提示用户是不是更好呢?

自由转载,转载请注明: 转载自WEB开发笔记 www.chhua.com

本文链接地址: PHP面向对象编程——再写PHP异常处理 http://www.chhua.com/web-note935

相关笔记

更多