看了很多关于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 :(
不知道怎么办