|
想知道到底Exception class比平常的if{异常}then{处理}到底有什么优势?- function fx($a = 0, $b = 0)
- {
- if($b == 0)
- {
- throw new Exception('Division by zero.');
- }
- return $a / $b;
- }
- try {
- fx(10, 0);
- } catch (Exception $e) {
- echo '异常: ', $e->getMessage(), "\n";
- }
复制代码 比起 if{异常}then{处理}的方法好像更加的意大利面代码- function fx($a = 0, $b = 0)
- {
- if($b == 0)
- {
- echo 'Division by zero.';
- return;
- }
- return $a / $b;
- }
- fx(10, 0);
复制代码 感觉上用Exception 就好象在用goto
以下的代码纯属概念,必不能在PHP编译器上执行.- function fx($a = 0, $b = 0)
- {
- if($b == 0)
- {
- goto 'exception';
- }
- return $a / $b;
- }
- fx(10, 0);
- echo "goto的小小概念\n";
- case 'exception':
- echo 'Division by zero.';
复制代码 如果我要捕捉这样的异常,应该如何写?- class test
- {
- public function fx()
- {
- return 0;
- }
- }
- $a = new test();
- unset($a);
- $a->fx(); //PHP编译器会在这里丢fatal error
- /*
- Notice: Undefined variable: a in c:\php\test.php on line 46
- Fatal error: Call to a member function fx() on a non-object in c:\php\test.php on line 46
- */
复制代码 难道要每一次call method之前做if{异常}then{处理}?
[ 本帖最后由 megablue 于 4-12-2007 07:12 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 4-12-2007 07:22 PM
|
显示全部楼层
对我而言, try catch 只是说,真的遇到 异常时, 不希望 program 直接死掉,然后可以继续跑弥补或retry 程序,
因为异常往往是 unexpected的, 尤其是 user input,
如果你能用 if 来 cover up 所有的可能性, 那就用 if 咯, 如果 还是有些真的预想不到的 异常,还是用 try catch 好了,
或是说,如果 你catch 了 也是反正 结束掉 program的 话, 那放不放都没分别,只是放了死的比较好看而已。。 |
|
|
|
|
|
|
|

楼主 |
发表于 4-12-2007 07:26 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 4-12-2007 10:35 PM
|
显示全部楼层
|
|
|
|
|
|
|

楼主 |
发表于 4-12-2007 10:44 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 6-12-2007 10:14 PM
|
显示全部楼层
|
|
|
|
|
|
| |
本周最热论坛帖子
|