php异常处理23717.doc

上传人:桔**** 文档编号:557109849 上传时间:2024-01-08 格式:DOC 页数:3 大小:41.50KB
返回 下载 相关 举报
php异常处理23717.doc_第1页
第1页 / 共3页
php异常处理23717.doc_第2页
第2页 / 共3页
php异常处理23717.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《php异常处理23717.doc》由会员分享,可在线阅读,更多相关《php异常处理23717.doc(3页珍藏版)》请在金锄头文库上搜索。

1、10.1.3 异常处理(1)异常(Exception)处理用于在指定的错误发生时改变脚本的正常流程,是PHP 5中的一个新的重要特性。异常处理是一种可扩展、易维护的错误处理统一机制,并提供了一种新的面向对象的错误处理方式。在Java、C#及Python等语言中很早就提供了这种异常处理机制,如果你对哪一种语言中的异常处理熟悉,那对PHP中提供的异常处理机制也不会陌生。1异常处理实现异常处理和编写程序的流程控制相似,所以也可以通过异常处理实现一种另类的条件选择结构。异常就是在程序运行过程中出现的一些意料之外的事件,如果不对此事件进行处理,则程序在执行时遇到异常将崩溃。处理异常需要在PHP脚本中使用

2、以下语句:1. try/所有需要进行异常处理的代码都必须放入这个代码块内 2. /在这里可以使用throw语句抛出一个异常对象 3. catch(ex1)/使用该代码块捕获一个异常,并进行处理 4. /处理发生的异常,也可再次抛出异常 5. 在PHP代码中所产生的异常可以被throw语句抛出并被catch语句捕获。需要进行异常处理的代码都必须放入try代码块内,以便捕获可能存在的异常。每一个try至少要有一个与之对应的catch,也不能出现单独的catch,另外try和cache之间也不能有任何的代码出现。一个异常处理的简单实例如下所示:1.2. try 3. $error=Alwaysthr

3、owthiserror; 4. thrownewException($error);/创建一个异常对象,通过throw语句抛出 5. echoNeverexecuted;/从这里开始,try代码块内的代码将不会再被执行 6. catch(Exception$e) 7. echoCaughtexception:,$e-getMessage(),n;/输出捕获的异常消息 8. 9. echoHelloWorld;/程序没有崩溃继续向下执行 10. ?在上面的代码中,如果try代码块中出现某些错误,我们就可以执行一个抛出异常的操作。在某些编程语言中,例如Java,在出现异常时将自动抛出异常。而在PH

4、P中,异常必须手动抛出。throw关键字将触发异常处理机制,它是一个语言结构,而不是一个函数,但必须给它传递一个对象作为值。在最简单的情况下,可以实例化一个内置的Exception类,就像以上代码所示那样。如果在try语句中有异常对象被抛出,该代码块不会再继续向下执行,而直接跳转到catch中执行。并传递给catch代码块一个对象,也可以理解为被catch代码块捕获的对象,其实就是导致异常被throw语句抛出的对象。在catch代码块中可以简单的输出一些异常的原因,也可以是try代码块中任务的另一个版本解决方案,此外,也可以在这个catch代码块中产生新的异常。最重要的是,在异常处理之后,程序

5、不会崩溃,而会继续执行。2扩展PHP内置的异常处理类在try代码块中,需要使用throw语句抛出一个异常对象,才能跳转到catch代码块中执行,并在catch代码块中捕获并使用这个异常类的对象。虽然在PHP中提供的内置异常处理类Exception,已经具有非常不错的特性,但在某些情况下,可能还要扩展这个类来得到更多的功能。所以用户可以用自定义的异常处理类来扩展PHP内置的异常处理类。以下的代码说明了在内置的异常处理类中,哪些属性和方法在子类中是可访问和可继承的:内置的异常处理类(Exception)1.2. classException 3. protected$message=Unknown

6、exception;/异常信息 4. protected$code=0;/用户自定义异常代码 5. protected$file;/发生异常的文件名 6. protected$line;/发生异常的代码行号 7. 8. function_construct($message=null,$code=0)/构造方法 9. 10. finalfunctiongetMessage()/返回异常信息 11. finalfunctiongetCode()/返回异常代码 12. finalfunctiongetFile()/返回发生异常的文件名 13. finalfunctiongetLine()/返回发生

7、异常的代码行号 14. finalfunctiongetTrace()/backtrace()数组 15. finalfunctiongetTraceAsString()/已格成化成字符串的getTrace()信息 16. 17. /*可重载的方法*/18. function_toString()/可输出的字符串 19. 20. ?上面这段代码只为说明内置异常处理类Exception的结构,它并不是一段有实际意义的可用代码。如果使用自定义的类作为异常处理类,则必须是扩展内置异常处理类Exception的子类,非Exception类的子类是不能作为异常处理类使用的。如果在扩展内置处理类Excep

8、tion时重新定义构造函数的话,建议同时调用parent:construct()来检查所有的变量是否已被赋值。当对象要输出字符串的时候,可以重载_toString()并自定义输出的样式。可以在自定义的子类中,直接使用内置异常处理Exception类中的所有成员属性,但不能重新改写从该父类中继承过来的成员方法,因为该类的大多数公有方法都是final的。创建自定义的异常处理程序非常简单,和传统类的声明方式相同,但该类必须是内置异常处理类Exception的一个扩展。当PHP中发生异常时,可调用自定义异常类中的方法进行处理。创建一个自定义的MyException类,继承了内置异常处理类Excepti

9、on中的所有属性,并向其添加了自定义的方法。代码及应用如下所示:扩展PHP内置的异常处理类的应用1.2. /*自定义的一个异常处理类,但必须是扩展内异常处理类的子类*/3. classMyExceptionextendsException 4. /重定义构造器使第一个参数message变为必须被指定的属性 5. publicfunction_construct($message,$code=0) 6. /可以在这里定义一些自己的代码 7. /建议同时调用parent:construct()来检查所有的变量是否已被赋值 8. parent:_construct($message,$code);

10、9. 10. 11. publicfunction_toString()/重写父类方法,自定义字符串输出的样式 12. return_CLASS_.:.$this-code.:.$this-message.; 13. 14. 15. publicfunctioncustomFunction()/为这个异常自定义一个处理方法 16. echo按自定义的方法处理出现的这个类型的异常; 17. 18. 19. 20. try/使用自定义的异常类捕获一个异常,并处理异常 21. $error=允许抛出这个错误; 22. thrownewMyException($error);/创建一个自定义的异常类对象,通过throw语句抛出 23. echoNeverexecuted;/从这里开始,try代码块内的代码将不会再被执行 24. catch(MyException$e)/捕获自定义的异常对象 25. echo捕获异常:.$e;/输出捕获的异常消息 26. $e-customFunction();/通过自定义的异常对象中的方法处理异常 27. 28. echo你好呀;/程序没有崩溃继续向下执行 29. ?

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号