大家是如何看待和使用php5中的新贵-------Exception------

看了很多关于php中Exception的使用的资料,自己也用了用,但总是感觉不到他给我带来了什么好处,

就来php5本身自带的一些函数跑出来的错误, 还是原来的php4的方式,用try{}catech*(){}方式根本就捕获不到这个错误的. 如果还要自己手工 throw 错误, 那这个新特征就没有什么意义了吧?

难道这个功能只是给自己控制流程用的??????

还有php5自己在那些方面可以自己抛出Exception??????????

是不是我那些地方的配置不对造成的?还是什么原因.

谈谈大家在什么样的具体情况下会考虑用它.

-_-!急
---------------------------------------------------------------

不会,帮顶一下~~~~~~~~
---------------------------------------------------------------

对于错误处理好像很重要的,我也不明白有什么用:(
---------------------------------------------------------------

Exception本来最多的就是用在自己编写的类层次中啊。当然系统会抛出部分Exception。
但是现在没有php5手册,所以谁也不知道哪些throws出了Exception.
不过这是个好东西。
有机会就应该使用。

---------------------------------------------------------------

我想这个只是在编写和测试中有用,在实际程序运行中没甚么用处
---------------------------------------------------------------

在jsp中是为把错误发到log.txt 编写中检查
保证程序持续运行.有错也不发到前台.
保证释放内存.断开数据库连接
php好象用不到,把抱错关了前太也就看不到了
内存..呵呵.我还不知道.php是怎么释放内存的
数据库连接.前几天我问了.有人说php会自动断开的

---------------------------------------------------------------

不怎么懂....学习一下
---------------------------------------------------------------

汗,还没看过PHP5
---------------------------------------------------------------

同寒
---------------------------------------------------------------

恩,PHP5的Exception确实像楼主说的那样,除非手工throw,否则错误一样会显示出来,
而不会像java那样只要try一下就可以了.
我觉得这方面的应用主要还是Exception类的继承,在自己写的类或函数中throw出该类型的Exception,然后再主程序中调用中就可以不用手工throw,而直接try,catch就可以了.
但是即使这样一些PHP5本身的错误还是不能catch的
---------------------------------------------------------------

http://classes.scriptsphp.net:81/article.PHP-5-et-les-exceptions#runtime
这篇文章讲了怎么处理系统runtime错误,可惜是法文的,
不过看看代码就能明白它是怎么处理的了

---------------------------------------------------------------

下面的代码我测试了,基本好用

 1   
 2/*   
 3** class RuntimeException 运行时异常处理类   
 4*/   
 5class RuntimeException extends Exception {   
 6  
 7  
 8protected $_context = array();   
 9function __construct($level, $string, $file, $line, $context){   
10  
11parent::__construct($string);   
12$this->file = $file;   
13$this->line = $line;   
14$this->_level = $level;   
15$this->_context = $context;   
16  
17}   
18  
19}   
20  
21/* 函数 runtimeErrorHandler($level, $string, $file, $line, $context)   
22**   
23*/   
24function runtimeErrorHandler($level, $string, $file, $line, $context)   
25{   
26throw new RuntimeException($level, $string, $file, $line, $context);   
27}   
28  
29set_error_handler("runtimeErrorHandler");   
30  
31try {   
32$i = 2/0;   
33}   
34catch (RuntimeException $e)   
35{   
36echo "有错误了!";   
37}   

---------------------------------------------------------------

没用过PHP5
不过要是手动throw,有跟没有有啥区别

异常,顾名思义就是不可预知的错误,哪有手动抛出的道理,失败

要是做到delphi的异常处理就爽多了
---------------------------------------------------------------

手动throw就意味着得到一个exception1,那么我截获它,我处理一下,放点东西,那么我自己弄一个exception2把它抛出,两次异常可以不同
---------------------------------------------------------------

我是来学习的。:)
---------------------------------------------------------------

我是这么看这个东西的,在JAVA中所有的类都是有基类的,而有一个最原始的Object类,那么它的体系结构是完整的,所以异常的处理也是连贯的。但是PHP最初并不是一个面向对象的语言。到现在也不是一个完全面向对象的语言,那么它的体系结构并不完整,或者严谨~~~

你可以在自己设计的类中使用异常处理,但是由于PHP所提供的不是类库,而是函数库,那么在异常的处理上可能就不是那么连贯了~~~

不知道大家有没有试过在C++中调用C的函数,你会发现同样不能捕获异常,只能通过返回码或错误标识来判断。

不知道我有没有理解错这个问题~~
---------------------------------------------------------------

set_error_handler不能catch E_ERROR :(
不知道怎么办

Published At
Categories with Web编程
Tagged with
comments powered by Disqus