【PHP的异常处理【完整】】
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 "捕捉到了异常信息! ".$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的异常处理【完整】】的更多相关文章
- 第13.1节 关于Python的异常处理
		
Python的异常网上有很多资料介绍,老猿就不再细说,在这里老猿只挑几件老猿认为重要的内容介绍一下. 一. 异常处理完整语法 异常处理的完整语法语法如下: try: - except (异常1,-,异 ...
 - Python基础知识:文件和异常
		
1.相对路径:如果文件和程序在同一文件夹内,可不用路径:如果文件在程序所在文件夹下一级文件夹中,只需添加下一级文件夹名称即可: 在Linux和OS系统中:文件路径中使用斜杠(/) 在Windows系统 ...
 - spring boot 跨域请求
		
场景 网站localhost:56338要访问网站localhost:3001的服务 在网站localhost:3001中增加CORS相关Java Config @Configuration @Ord ...
 - Spring MVC异常处理代码完整实例
		
Spring MVC异常处理流程: 提供构造方法传值: 配置异常处理器的bean
 - java 中异常处理示例并捕获完整异常内容
		
public class Test { public static void main(String[] args) { try { int a = 1; int b = 0; int c = a/b ...
 - 基于spring注解AOP的异常处理
		
一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...
 - 干货来袭-整套完整安全的API接口解决方案
		
在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...
 - 札记:Java异常处理
		
异常概述 程序在运行中总会面临一些"意外"情况,良好的代码需要对它们进行预防和处理.大致来说,这些意外情况分三类: 交互输入 用户以非预期的方式使用程序,比如非法输入,不正当的操作 ...
 - 解析大型.NET ERP系统 设计异常处理模块
		
异常处理模块是大型系统必备的一个组件,精心设计的异常处理模块可提高系统的健壮性.下面从我理解的角度,谈谈异常处理的方方面面.我的设计仅仅限定于Windows Forms,供参考. 1 定义异常类型 . ...
 
随机推荐
- MySQL 中根据A表的ID查询B表数据
			
例1:查询某个文章及其对应的评论(单个详情) ) FROM A; 例2:查询分类表中,每种分类各包含多少商品(汇总) SELECT category_id, (SELECT count(goods_i ...
 - Python QRCODE
 - docker -v挂载数据卷网络异常的问题
			
docker 删除容器并重新运行容器时报如下异常: docker: Error response from daemon: failed to create endpoint tomcat001 on ...
 - ios swift generator 文章推荐
			
https://medium.com/swift-programming/sequence-beyond-primitive-iterations-in-swift-80bc2507d8cc /// ...
 - Linux-PAM认证模块
			
Linux-PAM认证模块 用户访问服务器的时候,服务器的某一个服务程序把用户的谁请求发送到PAM模块进行认证.对于不同的服务器应用程序所对应的PAM模块也是不同的.如果想查看某个程序是否支持 ...
 - 基于Hadoop 2.6.0运行数字排序的计算
			
上个博客写了Hadoop2.6.0的环境部署,下面写一个简单的基于数字排序的小程序,真正实现分布式的计算,原理就是对多个文件中的数字进行排序,每个文件中每个数字占一行,排序原理是按行读取后分块进行排序 ...
 - 和我一起学python,初识python (life is short ,we need python)
			
作者:tobecrazy 出处:http://www.cnblogs.com/tobecrazy 欢迎转载,转载请注明出处.thank you! 由于项目需要(并非因为life is short), ...
 - SAP  SMARTFORM 变量显示技巧
			
&symbol& (括号中,小写字母为变量) &symbol& 屏蔽从第一位开始的N位&symbol (n)& 只显示前N位&sym ...
 - codeforces 425C Sereja and Two Sequences(DP)
			
题意读了好久才读懂....不知道怎么翻译好~~请自便~~~ http://codeforces.com/problemset/problem/425/C 看懂之后纠结好久...不会做...仍然是看题解 ...
 - 关于定时器 setTimeout
			
1.这里不考虑线程问题.把javascript想象成在时间线上运行,页面载入时,首先执行的是<script>标签中的代码,之后,将执行更多代码,当进程空闲时,下个代码就被触发并执行 如图: ...