如何使用异常处理机制
- 格式:doc
- 大小:33.50 KB
- 文档页数:3
如何使用异常处理机制
《PHP核心技术与最佳实践》第1章面向对象思想的核心概念,本章将就面向对象一些概念展开讨论,其中重点讨论PHP特色的面向对象的风格和语法,并通过相互借鉴和对比,使读者认识PHP自身的特点,尤其是和其他语言中不同的地方。本节为大家介绍如何使用异常处理机制。
1.6.1 如何使用异常处理机制(1)
异常的思想最早可以追溯到20世纪60年代,其在C++、Java中发扬光大,PHP则部分借鉴了这两种语言的异常处理机制。
PHP里的异常,是程序运行中不符合预期的情况及与正常流程不同的状况。一种不正常的情况,就是按照正常逻辑不该出错,但仍然出错的情况,这属于逻辑和业务流程的一种中断,而不是语法错误。PHP里的错误则属于自身问题,是一种非法语法或者环境问题导致的、让编译器无法通过检查甚至无法运行的情况。
在各种语言里,异常(exception)和错误(error)的概念是不一样的。在PHP里,遇到任何自身错误都会触发一个错误,而不是抛出异常(对于一些情况,会同时抛出异常和错误)。PHP一旦遇到非正常代码,通常都会触发错误,而不是抛出异常。在这个意义上,如果想使用异常处理不可预料的问题,是办不到的。比如,想在文件不存在且数据库连接打不开时触发异常,是不可行的。这在PHP里把它作为错误抛出,而不会作为异常自动捕获。
以经典的除零问题为例,如代码清单1-16所示。
代码清单1-16 exception.php
1.// exception.php
2.
3.$a=null;
4.try{
5.$a=5/0;
6.echo $a,PHP_EOL;
7.}catch(exception $e){
8.$e->getMessage();
9.$a=-1;
10.}
11.echo $a;
图1-8 PHP里的除零错误
代码清单1-17所示是Java代码。
代码清单1-17 ExceptionTry.java
1.// ExceptionTry.java
2.public class ExcepetionTry {
3.public static void tp() throws ArithmeticException{
4.int a;
5.a=5/0;
6.System.out.println("运算结果:"+a);
7.}
8.
9.public static void main(String[] args) {
10.int a;
11.try {
12.a=5/0;
13.System.out.println("运算结果:"+a);
14.} catch (ArithmeticException e) {
15. e.printStackTrace();
16.}finally{
17.a = -1;
18.System.out.println("运算结果:"+a);
19.}
20.try {
21.ExcepetionTry.tp();
22.} catch (Exception e) {
23.System.out.println("异常被捕获");
24.}
25.
26.}
27.}
28.如有侵权请联系告知删除,感谢你们的配合!
29.
30.
31.