PHP的异常处理机制大多数和java的很相似,但是没有finally,而且还可以自定义顶级异常处理器;捕捉到异常信息后,会跳出try-catch块,如果catch中没有跳转的动作,则会继续执行下一条语句。

简单的异常捕捉:

 <?php
function addUser($name)
{
if($name=="zheng")
{
echo "添加成功!<br/>";
}
else
{
throw new Exception("添加失败!<br/>");
}
} function updateUser($name)
{
if($name=="song")
{
echo "更新成功!<br/>";
}
else
{
throw new Exception("更新失败!<br/>");
}
}
try
{updateUser("xx");
addUser("zheng"); }
catch(Exception $e)
{
echo "捕捉到了异常信息!&nbsp;".$e->getMessage();
}
echo "你好";
?>

通过继承Exception类可以自定义异常类,实现自定义异常,可以捕获不同类型的异常以实现不同的处理机制。

 <?php
//通过这个程序可以实现捕捉不同的异常!
class Exception1 extends Exception
{ }
class Exception2 extends Exception
{ } //$x=1;
$x=2;
try
{
if($x==1)
{
throw new Exception1("异常信息1");
}
else
{
throw new Exception2("异常信息2");
}
}
catch(Exception1 $e1)
{
echo "捕捉到了".$e1->getMessage()."!";
}
catch(Exception2 $e2)
{
echo "捕捉到了".$e2->getMessage()."!";
}
?>

通过set_exception_handler方法可以自定义系统默认的异常处理器,我们可以认为是顶级异常处理器,一旦出现异常,系统会自动调用

 <?php
function myException($e)
{
echo "这里是顶级异常处理器!在没有进行捕捉的时候默认处理异常的异常处理器!<br/>异常信息是:".$e->getMessage();
}
set_exception_handler("myException"); throw new Exception("出现了程序异常!");
?>

最后,PHP的异常处理机制还存在漏洞(PHP5.3.5):

在下面的情况下PHP不会捕捉异常,而是直接报错。

 <?php
//php的两个经典漏洞
try
{
$a=8/0;
}
catch(Exception $e)
{
echo "异常信息捕捉成功!<br/>";
} try
{
$file=fopen("xxx.txt","r+");
}
catch(Exception $e)
{
echo "异常信息捕捉成功!<br/>";
} ?>

【PHP的异常处理【完整】】的更多相关文章

  1. 第13.1节 关于Python的异常处理

    Python的异常网上有很多资料介绍,老猿就不再细说,在这里老猿只挑几件老猿认为重要的内容介绍一下. 一. 异常处理完整语法 异常处理的完整语法语法如下: try: - except (异常1,-,异 ...

  2. Python基础知识:文件和异常

    1.相对路径:如果文件和程序在同一文件夹内,可不用路径:如果文件在程序所在文件夹下一级文件夹中,只需添加下一级文件夹名称即可: 在Linux和OS系统中:文件路径中使用斜杠(/) 在Windows系统 ...

  3. spring boot 跨域请求

    场景 网站localhost:56338要访问网站localhost:3001的服务 在网站localhost:3001中增加CORS相关Java Config @Configuration @Ord ...

  4. Spring MVC异常处理代码完整实例

    Spring MVC异常处理流程: 提供构造方法传值: 配置异常处理器的bean

  5. java 中异常处理示例并捕获完整异常内容

    public class Test { public static void main(String[] args) { try { int a = 1; int b = 0; int c = a/b ...

  6. 基于spring注解AOP的异常处理

    一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...

  7. 干货来袭-整套完整安全的API接口解决方案

    在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...

  8. 札记:Java异常处理

    异常概述 程序在运行中总会面临一些"意外"情况,良好的代码需要对它们进行预防和处理.大致来说,这些意外情况分三类: 交互输入 用户以非预期的方式使用程序,比如非法输入,不正当的操作 ...

  9. 解析大型.NET ERP系统 设计异常处理模块

    异常处理模块是大型系统必备的一个组件,精心设计的异常处理模块可提高系统的健壮性.下面从我理解的角度,谈谈异常处理的方方面面.我的设计仅仅限定于Windows Forms,供参考. 1 定义异常类型 . ...

随机推荐

  1. servlet部分知识总结

    1.解决中文显示乱码问题: 对于servlet :servlet里面加入代码response.setContentType("text/html;chartset=utf-8"); ...

  2. java复制文件

    package com.test.tes; import java.io.File; import java.io.FileInputStream; import java.io.FileOutput ...

  3. vtigerCRM5.4的安装和汉化 ubuntu

    由于php5.5经过较大改变,安装vtigercrm的时候可能需要修改一些配置 1.去官网下载vtiger5.4压缩包,解压后放在/var/www目录下 2.简单起见,将目录权限设置为777 vtig ...

  4. Database、User、Schema、Tables、Col、Row

    可以把Database看作是一个大仓库,仓库分了很多很多的房间,Schema就是其中的房间,一个Schema代表一个房间,Table可以看作是每个Schema中的床,Table(床)就被放入每个房间中 ...

  5. poj 3126

    一道搜索的水题,其实搜索相对其他的来说好掌握一点,因为有个固定的模板可以用去套 题目大意就是数字的变化,一个数字只可以变化到它最相邻的一个素数上去,意思是只变化一位数字,求最短的变化方案 #inclu ...

  6. struts2 配置 struts.xml 提示

    1.这个提示通常是在 连网络的时候才可以看到 2.当没有网路的时候我们该如何配置呢? window -->preferences -->xml catelog -->user.... ...

  7. 第十天 多进程、协程(multiprocessing、greenlet、gevent、gevent.monkey、select、selector)

    1.多进程实现方式(类似于多线程) import multiprocessing import time,threading def thread_run():#定义一个线程函数 print(&quo ...

  8. http get vs post

    http get vs post GET与POST方法有以下区别:(1) 在客户端,Get方式在通过URL提交数据,数据在URL中可以看到:POST方式,数据放置在HTML HEADER内提交.(2) ...

  9. MySQL排序原理与MySQL5.6案例分析【转】

    本文来自:http://www.cnblogs.com/cchust/p/5304594.html,其中对于自己觉得是重点的加了标记,方便自己查阅.更多详细的说明可以看沃趣科技的文章说明. 前言    ...

  10. Spring 系列: Spring 框架简介

    Spring AOP 和 IOC 容器入门(转载) 在这由三部分组成的介绍 Spring 框架的系列文章的第一期中,将开始学习如何用 Spring 技术构建轻量级的.强壮的 J2EE 应用程序.dev ...