当前位置:文档之家› 如何使用异常处理机制

如何使用异常处理机制

如何使用异常处理机制
《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.<?php
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.。

相关主题