php错误、异常处理机制(补充)


Posted in PHP onMay 07, 2012

一、错误处理
异常处理: 意外,是在程序运行过程中发生的意料这外的事,使用异常改变脚本正常流程
PHP5中的一个新的重要特性

if(){ 
}else{ 
} 
try { 
}catch(异常对象){ 
}

1. 如果try中代码没有问题,则将try中代码执行完后就到catch后执行
2. 如果try中代码有异常发生,则抛出一个异常对象(使用throw),抛出给了catch中的参数, 则在try中代码就不会再继续执行下去
直接跳转到catch中去执行, catch中执行完成, 再继续向下执行
注意: 提示发生了什么异常,这不是主要我们要做事,需要在catch中解决这个异常, 如果解决不了,则出去给用户
二、自己定义一个异常类
作用:就是写一个或多个方法解决当发生这个异常时的处理方式
1. 自己定义异常类,必须是Exception(内置类)的子类,
2. Exception类中的只有构造方法和toString()可以重写, 其它都final
三、处理多个异常
自己定义功能类时如果在方法中抛出异常
class OpenFileException extends Exception { 
function __construct($message = null, $code = 0){ 
parent::__construct($message, $code); 
echo "wwwwwwwwwwwwwww<br>"; 
} 
function open(){ 
touch("tmp.txt"); 
$file=fopen("tmp.txt", "r"); 
return $file; 
} 
} 
class DemoException extends Exception { 
function pro(){ 
echo "处理demo发生的异常<br>"; 
} 
} 
class TestException extends Exception { 
function pro(){ 
echo "这里处理test发生的异常<br>"; 
} 
} 
class HelloException extends Exception { 
} 
class MyClass { 
function openfile(){ 
$file=@fopen("tmp.txt", "r"); 
if(!$file) 
throw new OpenFileException("文件打开失败"); 
} 
function demo($num=0){ 
if($num==1) 
throw new DemoException("演示出异常"); 
} 
function test($num=0){ 
if($num==1) 
throw new TestException("测试出错"); 
} 
function fun($num=0){ 
if($num==1) 
throw new HelloException("###########"); 
} 
} 
try{ 
echo "11111111111111<br>"; 
$my=new MyClass(); 
$my->openfile(); 
$my->demo(0); 
$my->test(0); 
$my->fun(1); 
echo "22222222222222222<br>"; 
}catch(OpenFileException $e){ //$e =new Exception(); 
echo $e->getMessage()."<br>"; 
$file=$e->open(); 
}catch(DemoException $e){ 
echo $e->getMessage()."<br>"; 
$e->pro(); 
}catch(TestException $e){ 
echo $e->getMessage()."<br>"; 
$e->pro(); 
}catch(Exception $e){ 
echo $e->getMessage()."<br>"; 
} 
var_dump($file); 
echo "444444444444444444444<br>";
PHP 相关文章推荐
人大复印资料处理程序_输入篇
Oct 09 PHP
php面向对象的方法重载两种版本比较
Sep 08 PHP
PHP中10个不常见却非常有用的函数
Mar 21 PHP
简单的php写入数据库类代码分享
Jul 26 PHP
thinkphp中连接oracle时封装方法无法用的解决办法
Jun 17 PHP
php中如何防止表单的重复提交
Aug 02 PHP
Codeigniter注册登录代码示例
Jun 12 PHP
php统计数组元素个数的方法
Jul 02 PHP
验证坐标在某坐标区域内php代码
Oct 08 PHP
PHP带节点操作的无限分类实现方法详解
Nov 09 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 PHP
如何在Laravel5.8中正确地应用Repository设计模式
Nov 26 PHP
PHP中的错误处理、异常处理机制分析
May 07 #PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
May 07 #PHP
PHP file_exists问题杂谈
May 07 #PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
May 06 #PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
May 05 #PHP
php截取后台登陆密码的代码
May 05 #PHP
php在线代理转向代码
May 05 #PHP
You might like
PHP 全角转半角实现代码
2010/05/16 PHP
PHP投票系统防刷票判断流程分析
2012/02/04 PHP
PHP数据库链接类(PDO+Access)实例分享
2013/12/05 PHP
destoon二次开发模板及调用语法汇总
2014/06/21 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
2015/11/05 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
prototype Element学习笔记(篇二)
2008/10/26 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
2014/01/16 Javascript
Android中的jQuery:AQuery简介
2014/05/06 Javascript
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
简述JavaScript中正则表达式的使用方法
2015/06/15 Javascript
jQuery实现动态添加和删除一个div
2015/08/12 Javascript
小程序日历控件使用方法详解
2018/12/29 Javascript
微信小程序template模版的使用方法
2019/04/13 Javascript
说说Vuex的getters属性的具体用法
2019/04/15 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
2019/09/07 Javascript
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
python socket网络编程步骤详解(socket套接字使用)
2013/12/06 Python
从零学Python之hello world
2014/05/21 Python
python实现带声音的摩斯码翻译实现方法
2015/05/20 Python
python实现神经网络感知器算法
2017/12/20 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
python中多层嵌套列表的拆分方法
2018/07/02 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
python实现简单颜色识别程序
2020/02/19 Python
在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)
2020/04/19 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
掌上明珠Java程序员面试总结
2016/02/23 面试题
大学生学习自我评价
2014/01/13 职场文书
幼儿园小班家长寄语
2014/04/02 职场文书
缅怀革命先烈演讲稿
2014/05/14 职场文书
2015年工商所工作总结
2015/05/21 职场文书
埃及王子观后感
2015/06/16 职场文书
2019大学毕业晚会主持词
2019/06/21 职场文书