【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 定义异常类型 . ...
随机推荐
- PyCharm 入手第一记
因为我是忠实的Linux用户,所以一下操作是在Linux下的完成,除了下载,因为Linux的下载着实有点让人捉急. PyCharm 下载地址: http://www.jetbrains.com/pyc ...
- EXTJS Ajax请求中文乱码
设置actionMethods, read为post proxy: { type: 'ajax', url: '../Dictionary/query', actionMethods: { read: ...
- discuz内置常用CSS代码分析
CSS多IE下兼容HACK写法 所有 IE浏览器适用:.ie_all .foo { ... } IE6 专用:.ie6 .foo { ... } IE7 专用:.ie7 .foo { ... } IE ...
- How can I determine the URL that a local Git repository was originally cloned from?
git remote show origin from: http://stackoverflow.com/questions/4089430/how-can-i-determine-the-url- ...
- Peeking Iterator
Given an Iterator class interface with methods: next() and hasNext(), design and implement a Peeking ...
- ACM/ICPC 之 Bellman Ford练习题(ZOJ1791(POJ1613))
这道题稍复杂一些,需要掌握字符串输入的处理+限制了可以行走的时间. ZOJ1791(POJ1613)-Cave Raider //限制行走时间的最短路 //POJ1613-ZOJ1791 //Time ...
- ACM/ICPC 之 平面几何-两直线关系(POJ 1269)
题意:给定四点的坐标(x,y),分别确定两直线,求出其交点,若重合or平行则输出相应信息 用四个点的坐标算出直线通式(ax+by+c=0)中的a,b,c,然后利用a,b,c计算出交点坐标(其他公式不够 ...
- 4.js模式-发布-订阅模式
1. 发布-订阅模式 var observe = (function(){ var events = {}, listen, trigger, remmove; listen = function(k ...
- 1. javacript高级程序设计-JavaScript简介
JavaScript诞生于1995年,由Netscape公司布兰登·艾奇开发,JavaScript主要包括三个部分: (1). ECMAScript,由ECMA-262定义,提高核心语言功能 (2). ...
- Java for LeetCode 215 Kth Largest Element in an Array
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so ...